关于C语言编程的练习题

来源:百度知道 编辑:UC知道 时间:2024/06/18 14:49:53
求助一下问题,都有答案,但是不明白其过程,希望大家解答时给出思路或过程,我是初学者,望各位高手赐教!谢谢!

问题1、int a=10 则a+=a-=a*=a的值为?(答案为0)

问题2、已知定义语句“int x='f';”,则表达式“‘A'+(x-‘a'+1)”的值为?(答案为70)

问题3、
main()
{char x=0xFFFF;
printf("%d\n",x--);} 输出结果是?(答案是-1)

问题4、main()
{int a=177;
printf("%#o\n",a);} 输出结果是?(答案是0X10)

问题1:计算按照优先级顺序为a=a*a=100;a=a-a=0;a=a+a=0
问题2:这个是字符的ASC码值的计算,A=65,a=97,f=102,表达式的值等于65 +(102-97+1)=71
问题3:对于有符号整数来说,最小的负数-1=最大的整数,最大的整数+1=最小的负数。x--是先赋值x给打印出来,后执行了--操作的。
问题4:输出结果为0261,因为%#o是输出8进制结果177=2×64+6×8+1

1,a*=a 即是a=10*10=100,然后 a-=a 即a=100-100=0,最后a+=a 即 a=0+0
2,f的ASC码值是102 A的是65,a的是97
后面的不是很清楚

第一题:
从右往左算:a=*a:a=100,a-=a:a=0,a+=a:a=0
第二题:
'A','f'.'a'都转化为对应的ascII码,计算就是65 + (102-97 + 1),答案为71
70不对
第三题:
-1的表示码就是0xffff,输出结果当然是-1
第四题:
“%#o”,#表示打印出进制的标志头,比如8进制的0,16进制的0x
o表示8进制
打印出来的是0261,0x10不对