如果用int类型65打印%c会显示垃圾值还是A,为什么?

作者&投稿:博风 (若有异议请与网页底部的电邮联系)
在C语言中将一个很大的正整数赋值给一个int类型变量a,输出a时有时会显示负值,为何?~

在不同的C系统中,int有不同的表示范围。
32位(4字节)的int,它可以表示的数字范围是-2147483648~+ 2147483647,共可表示4294967296个不同的数。
这是因为它有点像我们用(每个档位上只可以表示0~9)的算盘。假如我们的一个算盘有4个档位,它能表示从0~9999共10000个不同的数字。当我们要把比9999更大的数字存放到算盘上时,走出的部分就“丢失”了。如果要存的数字是12345,按“老规矩”存放完毕后,读取算盘上的数字时,由于数据发生了丢失,只能读到2345。这是由于12345-10000=2345。

再来看计算机里的int,如果我们要把2147483648存入到int变量中时,由于超出了范围,就发生了丢失。读取时,就变成了2147483648-4294967296=-2147483648了。
其它更大的数字,所变成的负数大小,也是这样的规律(都是减去了4294967296或它的倍)。

321转换为二进制为
101000001‬
char类型只占8位,所以最高位溢出
结果为
01000001=65
不知道这么说你懂了吗

是A,因为根据ASCII码,‘A’的int值就是65
、、、、、、、、、、、、、、、、、、、、、、、
英文缩写及全称
缩写:ASCII
英文全称:American Standard Code for Information Interchange
编辑本段简介
美国信息交换标准代码是一种用于信息交换的美国标准代码。7位字符集广泛用于代表标准美国键盘上的字符或符号。通过将这些字符使用的值标准化,ASCII允许计算机和计算机程序交换信息。ASCII字符集是与ANSI字符集中的前面128个(0-127)字符相同。
美国信息交换标准代码ASCII为"美国信息交换标准代码"十个字对应英文的缩写,ASCII文件是简单的无格式文本文件,可以由任何计算机所识别,Windows中的记事本及任何文字处理程序都可以阅读及创建ASCII文件。ASCII文件通常都具有扩展名.TXT(例如README.TXT)
在计算机中,所有的数据在存储和运算时都要使用二进制数表示,同样的,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通讯而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的美国信息交换标准码,统一规定了上述常用符号用哪个二进制数来表示。
编辑本段历史发展
美国信息交换标准码是由美国国家标准学会(AmericanNationalStandardInstitute,ANSI)制定的,标准的单字节字符编码方案,用于基于文本的数据。起始于50年代后期,在1967年定案。它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,它已被国际标准化组织(ISO)定为国际标准,称为ISO646标准。适用于所有拉丁文字字母。
ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。
十进制编码 (对应)缩写字符(或功能/解释)
0 NUL(null) 空字符
1 SOH(start of headline) 标题开始
2 STX (start of text) 正文开始
3  ETX (end of text) 正文结束
4  EOT (end of transmission) 传输结束
5  ENQ (enquiry) 请求
6  ACK (acknowledge) 收到通知
7  BEL (bell) 响铃
8  BS (backspace) 退格
9 HT (horizontal tab) 水平制表符
10 LF (NL line feed, new line) 换行键
11 VT (vertical tab) 垂直制表符
12 FF (NP form feed, new page) 换页键
13 CR (carriage return) 回车键
14 SO (shift out) 不用切换
15 SI (shift in) 启用切换
16 DLE (data link escape) 数据链路转义 
17 DC1 (device control 1) 设备控制1
18 DC2 (device control 2) 设备控制2
19 DC3 (device control 3) 设备控制3
20 DC4 (device control 4) 设备控制4
21 NAK (negative acknowledge) 拒绝接收
22 SYN (synchronous idle) 同步空闲 
23  ETB (end of trans. block) 传输块结束
24  CAN (cancel) 取消
25  EM (end of medium) 介质中断
26  SUB (substitute) 替补
27  ESC (escape) 换码(溢出)
28  FS (file separator) 文件分割符
29  GS (group separator) 分组符
30  RS (record separator) 记录分离符
31  US (unit separator) 单元分隔符
32 space 空格
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
127 DEL(delete 删除)


c语言char与int区别,例如让int a=65或char a=65,他们在输出时用printf...
自己不一样,你定义int a =65的时候在 计算机中保存的是65的asc码,你定义char a = 65的时候 因为你后面的65没有带引号,所以她会把65转成asc码为65的字符然后保存在电脑中 其他的你看着来吧

行unsighed+int型说明,将65赋给2,66赋给b,67赋给C,对变量a、b、c用%c...
unsigned int 表示无符号整数类型,它的取值范围为 0 到 2^32-1,可以存储正整数。根据题意,可以将 65 赋给变量 a,将 66 赋给变量 b,将 67 赋给变量 c。赋值的方式可以使用以下语句:unsigned int a = 65;unsigned int b = 66;unsigned int c = 67;使用 %c 格式说明符可以将整数转换...

设有inta=65;执行语句printf("%x\\n",a)后的结果是多少?
65的十六进制呗 41

...public static void main(String[] args) { int i = 10; System.o...
System.out.println(false?i:x); \/\/line5。表达式1是int类型的变量,表达式2是char类型的变量,没有常量表达式。因此要进行类型提升,把char类型提升为int类型,整个条件运算符结果的类型就是int类型。所以输出结果就是65。2、我们再看第二个代码片段,它的结果是在编译阶段引发错误。为什么?Test t...

分别用字符和ASCII码形式输出整数值65和66(C++)
'A' 的ASC II码值是65,而'B'是66,你讲char类型的a,b变量强制转换成了int,cout就“误以为”你输入了一个int变量让它显示,结果就将'A','B'的ASC码值输出在了屏幕上 即65,66 int类型的ascii_1和ascii_2也是一样的道理,你将他们转换成了char类型的变量,cout就以char类型的输出方式,将...

java中的int是什么意思
int是Java语言中的基本数据类型,它表示整数的数值。一种方便的编程工具,它为程序员提供了一种快速,简单和有效的方法来存储和检索整数。 int变量可以存储正整数,负整数和零。在Java编程中,int常常用于循环计数器,存储数组下标,以及数值类计算。Java的int类型具有固定大小和范围,32位的int类型其取值...

32位操作系统int类型最大值是多少?
32位操作系统int类型的最大值是 2147483647。在32位操作系统下int类型取值范围如下:1、Int32 \/\/等于int, 占4个字节(-2147483648~2147483647)。2、Int8 \/\/等于byte,3、Int16 \/\/等于short, 占2个字节(-32768~32767)。4、Int64 \/\/等于long, 占8个字节(-9223372036854775808~922337203...

int编程中是什么意思?
在C\/C++编程语言中,int表示整型变量,是一种数据类型,用于定义一个整型变量,在不同编译环境有不同的大小,不同编译运行环境大小不同。整型变量顾名思义是数值可以变的量,整型变量表示的是整数类型的数据。在C语言中,整形变量的值可以是十进制,八进制,十六进制,但在内存中存储着是二进制数。编...

byte和int,char类型有什么区别
byte和int,char类型区别如下:1、byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。2、char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。3、int是整型数据类型,是有...

c语言问题,在问题补充里,求详解!
f是double类型,f=1.5384...,这是表达式的值即为f的值;最后执行a=f,a是int类型,取整后a=1。按输出格式输出后输出结果:1 65 1.5 6.5 建议printf("%d%d%3.1f%3.1f\\n",a,c,f,x);改成printf("%d %d %3.1f %3.1f\\n",a,c,f,x);使用空格或Tab隔开输出结果,以便观察。

寿县15864344128: c语言char与int区别,例如让int a=65或char a=65,他们在输出时用printf("%a",a)所输出的不都是A吗? -
厨人雷参伯: 一个是字符型,在这个例子中只是输出当然没区别 但是你可以计算a^2么, 对于char? 你可以定义整型为字符 'Hello'么,这个问题没有很大意义, 对类型的选择是你的需要决定的 如果只是输出,任何可以表达成功的类型都可以.

寿县15864344128: 若有int c=67;则printf(“%c,%d\n”,c,c); -
厨人雷参伯: C,67 这个是c的格式化输出,%c表示一个char,%d是一个int,C的ascii码是67,所以%c输出C

寿县15864344128: c语言输入为int,输出为%f和输入为float,输出为%d各有什么后果? -
厨人雷参伯: 看你声明的变量类型是什么. 如果声明的变量是int类型,则用scanf输入和用printf输出时,都要使用%d格式. 如果声明的变量是float类型,则在用scanf输入和printf输出时,都要使用%f格式. 否则,有一个把格式用错,输出的都是乱码. 有什么问题请留言.

寿县15864344128: 为什么int可以用%d和%c打印 但不能用%f打印 -
厨人雷参伯: %f属于浮点型,不属于整数 %d%c都属于整数,%d是十进制整数,%c是字符(其实实质是ASCII码所以说是整数)

寿县15864344128: C语言里字符用%d打印的问题 -
厨人雷参伯: 用%d格式打印一个char类型的字符时,输出的是这个字符的ASCII码.比如:char c='A';用%d格式打印c,将输出65.

寿县15864344128: 分别用字符和ASCII码形式输出整数值65和66(C++) -
厨人雷参伯: #include < iostream > using namespace std; void main() { char a='A',b='B'; int ascii_1=53,ascii_2=54;//ASCII码中的5和6 cout<<"字符输出:"<<a<<","<<b<< endl; cout<<"ASCII码输出:"<<'\t'; cout<<(char)ascii_1<<'\t'<<(char)ascii_2<< endl; }//a,b本就是字符变量,不必强制转换成int.ASCII码你连续输出了两次,所以是56,56.其实代表的就是ascii_1=5,ascii_2=6.只不过输出时5和6之间没有空格.

寿县15864344128: 用C++输入一个整数,该数为65时,输出A;该数为66时,输出B;该数为67时,输出C;其他值则输出END -
厨人雷参伯: 建议看一下ASCII码表,字符 'A' 对应 65 ,字符 'B' 对应 66 ,字符 'C' 对应 67……#include <iostream> using namespace std; int main() { int iNum = 0; cout<<"输入一个整数:"<<endl; cin>>iNum; switch (iNum) { case 65:cout<<(char)iNum<<endl;break; case 66:cout<<(char)iNum<<endl;break; case 67:cout<<(char)iNum<<endl;break; default:cout<<"END"<<endl; } }

寿县15864344128: 分别用字符和ASCII码形式输出整数值65和66(C++)
厨人雷参伯: // 是这样的吗? #include <iostream> using namespace std; void main() { char a = 'A',b = 'B'; int ascii_1 = 53,ascii_2 = 54;//ASCII码中的5和6 cout<<"字符输出: "<<(int)a<<","<<(int)b<< endl; cout<<"ASCII码输出: '"<<(char)ascii_...

寿县15864344128: char型可以用%d输出,而int型数据不能用%c输出?? -
厨人雷参伯: int型数据超过[0,127]这个范围就不能用%c输出. 当一个int型数据在[0,127]这个范围内,它不一定能用%c输出. ASCII 表上的数字 0–31 分配给了控制字符,用于控制像打印机等一些外围设备,是不可打印的 意思就是不可输出. 扩展资料: ...

寿县15864344128: [C语言]关于int类型和char转换 -
厨人雷参伯: int x=97; //printf("%c",x); //答案为a,不知道是怎么实现的说明:因为你的x是整型,你下面要输出字符型,编译器就会输出ASSIC码为这个整型数所对应的...

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网