关于C语言基础的问题,要求解过程5

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:26:56
1.有定义语句:int=5,b;,则不能给b赋2的赋值语句是()
A b=a/2
B b=b+2
C b=2%a
D b=2.9
答案选B,为什么?

2帮忙分析一下这个程序,谢谢
#include <stdio.h>
main()
{ int a=252;
printf("a=%-5o**a=%x\n,a,a);
printf("a=%#o**a=%x\n,a,a);}
重点是PRINTF那2行看不明白.

B b=b+2,b没有初始化,因此b的值是个随机数,b=b+2更是随机数
如果先赋值b=0,b=b+2就对了

printf("a=%-5o**a=%x\n",a,a);
printf("a=%#o**a=%x\n",a,a);

%o表示将输出的数转换成8进制显示在屏幕上
%-5o表示输出的数左对齐并且加上足够多的空格使它占满5位
%x表示输出16进制数
%#o表示显示八进制数时应该带一个'0'前缀

有%o这类的东西在输出时会用后面的变量的值替代,其他字符将原样输出在屏幕上
因为252换成8进制是374,16进制是fc

所以输出形式为:
a=374 **a=fc
a=0374**a=fc

1,因为b没有初始化哦

2,%o是八进制输出,%x是十六进制输出
%-5o中间多了"-5","5"是占5个字符多余字符用空格补,"-"是数字靠左对齐
#就是在八进制输出时多在前面输出个0

貌似是这样..

我知道,如果初始化B=0时,B=B+2这个语句才正确!