关于C语言

王朝知道·作者佚名  2009-07-16
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

int=i;

char a='\376';

i=a;

printf("%d\n",i);

结果等于-2

请问一下,这个结果怎么计算出来的?麻烦高手们说得详细一点,我是个刚入门的菜鸟.

还有就是"将字符的8位放到整型变量低8位,高8位补零."这句怎么理解.

參考答案:

你好,

char a='\376'

此语句表示把八进制的376(十进制的254,二进制为***********)所

对应的ASCII码赋给字符变量a(a的ASCII码的值为:""),当把

字符型变量a赋给整型变量i时,变量i在计算机中存储的内容为:

***********(补码形式),根据补码知识,它表示一个负数(因为

最高位为1),转换为原码为:***********(除最高为外,各位按位

取反,末位加1),根据***********可以得知,它代表-2(最高位

为1表示负数),所以,按整型方式输出i,得到-2。

------------

另外,转意字符用'\'后面跟三位八进制数或两位十六进制数,

其格式必须符合规范才能正确转换为你需要的ASCII码值,

八进制数表示范围:'\000'~'\377',十六进制表示的范围:

'\x00'~'\xff'。使用转意字符时,八进制的数可以在开头加

o,例如:'\o376'也可以不加,'\376'不加时默认为八进制数,

十六进制必须加x,如:'\x28'。

你书写的char a='\286',是有语法错误的语句,

虽然在编译和运行时不会报错,但是,程序的运行已经处于

异常状态了。

如果你是C语言的初学者,请你严格按语法规范,对程序严格要求。

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航