求答案 求过程c语言
3个回答
展开全部
记住:
自增运算符++在变量前面:++a,你先把把变量a的值加1,然后把变量a代进其他表达式参与运算;
++在后面:a++,先把变量a代进其他表达式参与运算,这个表达式运算完了之后,把变量a的值加1。
运算符在变量前面:变量先增加后使用。在后面:变量先使用后增加。
自减运算符同理。
格式说明符:
%o - 以无符号8进制形式输出
%x - 以无符号16进制形式输出
%d - 以带符号10进制形式输出
注意:因为整数在内存中也是以二进制的形式存储的,所以上面三个进制转换的操作数原来都已经转化成二进制了。
这里初值情况:x = 010, y = 12。
二进制形式:x = 1000,y = 1100
进制转换不会的,先用计算器。
第一句:++x,++在变量前面,先增加后使用,先把x值加1,从1000变为1001,然后把x值代入前面的控制字符串参与执行,这里通过格式说明符%d以10进制输出:
9
再看y++,++在变量后面,先使用后增加,先把y原来的值1100带入前面的控制字符串参与执行,这里通过格式说明符%x以16进制输出:
c
之后,把y值加1,从1100变为1101
所以,第一句执行后,输出:9, c,变量的取值:x = 1001, y = 1101
第二句:x++,++在变量后面,先使用后增加,先把x原来的值1001带入前面的控制字符串参与执行,这里通过格式说明符%x以16进制输出:
9
之后,把x值加1,从1001变为1002。
再看++y,++在变量前面,先增加后使用,先让y值加1,从1101变为1102,然后把y值带入前面的控制字符串参与执行,这里通过格式说明符%o以8进制输出:
16
所以,第二句printf执行后,输出:9, 13,变量取值:x = 1002, y = 1102
如果在格式说明符%x和%o中加入#:%#x, %#o,会使输出8进制和16进制形式时带前缀0和0x。那么这题的输出就变成:
9, 0xc
0x9, 016
自增运算符++在变量前面:++a,你先把把变量a的值加1,然后把变量a代进其他表达式参与运算;
++在后面:a++,先把变量a代进其他表达式参与运算,这个表达式运算完了之后,把变量a的值加1。
运算符在变量前面:变量先增加后使用。在后面:变量先使用后增加。
自减运算符同理。
格式说明符:
%o - 以无符号8进制形式输出
%x - 以无符号16进制形式输出
%d - 以带符号10进制形式输出
注意:因为整数在内存中也是以二进制的形式存储的,所以上面三个进制转换的操作数原来都已经转化成二进制了。
这里初值情况:x = 010, y = 12。
二进制形式:x = 1000,y = 1100
进制转换不会的,先用计算器。
第一句:++x,++在变量前面,先增加后使用,先把x值加1,从1000变为1001,然后把x值代入前面的控制字符串参与执行,这里通过格式说明符%d以10进制输出:
9
再看y++,++在变量后面,先使用后增加,先把y原来的值1100带入前面的控制字符串参与执行,这里通过格式说明符%x以16进制输出:
c
之后,把y值加1,从1100变为1101
所以,第一句执行后,输出:9, c,变量的取值:x = 1001, y = 1101
第二句:x++,++在变量后面,先使用后增加,先把x原来的值1001带入前面的控制字符串参与执行,这里通过格式说明符%x以16进制输出:
9
之后,把x值加1,从1001变为1002。
再看++y,++在变量前面,先增加后使用,先让y值加1,从1101变为1102,然后把y值带入前面的控制字符串参与执行,这里通过格式说明符%o以8进制输出:
16
所以,第二句printf执行后,输出:9, 13,变量取值:x = 1002, y = 1102
如果在格式说明符%x和%o中加入#:%#x, %#o,会使输出8进制和16进制形式时带前缀0和0x。那么这题的输出就变成:
9, 0xc
0x9, 016
更多追问追答
追答
分析第二句printf的输出写错了,不是9, 13,是9, 16。
进制转换会吗,不会我写一下转换方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询