我从新复习了一下C,因为想当一名IOS开发工程师,为过两天学习OC打下基础。
我想问下:
char a = '1';
那么这个a是0000 0001还是ASCII里的1,也就是49?
老是分不清楚。特别是今年接触了汇编之后。
当然是49,如果是1,那么应该是char c = (char)1;
这个 就是一个字符1呀,没有那么多的含义吧
49,这个是字符,不是数字1
打印的时候打印出整型就知道了
那如果是char a = 1; 这个1保存在内存中是1还是49
49 保存的是字符的ASCII码
这么来说吧:
printf("%s", &a); //这个打印的是字符串 1
printf("%d", a); //这个打印的是ASCII码 49
实际上它就是字符串1.只不过后面的那个是转换成了ASCII了。
49,是字符,不是数值
不好意思 ,帮不上你的忙 了,想了好久还是想不出
49,额,感觉楼上说的好专业,“不好意思,帮不上你忙了,想了好久还是想不出来”,专业回复!哈哈!
因为单引号的意思是字符,所以这里‘1’表示的是字符
从ascii的角度来看‘1’= 0x31,也就是十进制的:49
如果你要求char a在内存中的值是1,那么就要用:
char a = 1;
或者
char a = 0x1;
同样的一组数据存储在内存中其解释的方式不同内容也会不同比如同样是数据但是float型和int型的解释就不会一样这是针对解释的数据在内存中的问题。
所以如果你存储的是无符号的数据1时在内存中会是0000 0001 但是如果存储的是字符 1的话就会是49.当然你以后也学会涉及到unicode等编码之类的问题好好加油吧!
49啊,你用‘’表示,这就是字符,字符1代表的就是
是49,‘’的作用是把 1 转化为ASCII码值,如果是char a = 1;那么啊就是1两
标准数据总体来说分为两类:整数数据、字符数据;显然字符数据也是整数数据的一个特类。字符数据遵循ASCII协议,也就是特定的数值表示特定的含义,比如你这里0x31(也即49),表示char ‘1’,0x20(也即32)表示空格符........之所以约定ASCII是为了我们在全球范围内更好的通信,交流信息,便于我们正确的对信息编码和解码~
如果把一个数字字符用两个单引号''括起来的话,那么他代表的就是一个字符常量,否则就是一个数值常量,如下面所示,
char x =1; //在变量x所代表的内存中存放的是0000 0001,内存中存放的是表面表示的量1
char y = '1'; //在变量y所代表的内存中存放的是0110 0001,字符常量在内存中存放的是ascii码表中对应的ascii值也就是49
如果把一个数字字符用两个单引号''括起来的话,那么他代表的就是一个字符常量,否则就是一个数值常量,如下面所示,
char x =1; //在变量x所代表的内存中存放的是0000 0001,内存中存放的是表面表示的量1
char y = '1'; //在变量y所代表的内存中存放的是0110 0001,字符常量在内存中存放的是ascii码表中对应的ascii值也就是49
如果把一个数字字符用两个单引号''括起来的话,那么他代表的就是一个字符常量,否则就是一个数值常量,如下面所示,
char x =1; //在变量x所代表的内存中存放的是0000 0001,内存中存放的是表面表示的量1
char y = '1'; //在变量y所代表的内存中存放的是0110 0001,字符常量在内存中存放的是ascii码表中对应的ascii值也就是49