假定所有变量均已正确定义 下列程序段运行后x的值是 k1=1 k2=2
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 02:08:01
只要a不为零,则A执行printf("%d\n",x);//if中的语句B执行printf("%d\n",x);//else中的语句C执行printf("%d\n",x);//if中的语句D执行pri
k1=1;!k1==0,if(!k1)等价于if(k1==0)k2=2;if(k2)等价于if(k2!=0)if(!k1)x--;//k1!=0,条件不成立elseif(k2)x=4;//k2!=0,
前面的不管到if(c)x=3;elsex=4;时,由于C=0,为FALSE所以走elseX=4是个简单赋值操作,因此,不管之前x是多少,走了这个流程以后,就是4了
c其中==号是判断语句,不是赋值语句
所以运行的代码应该是x=3.你能不能把题目一块给,这样根本不明白你的程序要干什么!按照你现在的程序,结果肯定是3;题目是你手打字
答案是DA.(
if(!a)x--;条件为真x=34elseif(b);if(c)x=3;条件为假elsex=4;执行此处,所以X=4A)34B)4C)35D)3
0)w=a=bw的类型和ab不同,类型不同占用的存储空间和存放的寄存器也不一样,如果要赋值需重新对类型进行注释:w=(int)a=(int)b0)a=a++=5连环赋值是c和C++特有用法,顺序是从右
x=4因为a=0时候!a为真所以,x自减1.跟着直接到if(c)由于c=0所以运行else,x=4如果编译器打开优化的话,会直接忽略所有过程,得到x=4
a=b=c=0;x=35if(!a)x--;!a成立,为true,则x--就是34elseif(b);
Da,b是double类型,如果ab是0.1,就会出现除数是零了,就出错了,D是对的,先判断,后赋值,这样允许的!
%:这个是模运算,他的后面必须是整形的再问:嗯谢谢了。。。还有一个问题,赋值语句:x3=0x12为什么是正确的是什么意思呢?再答:0x12是十六进制的数,0x12=18,所以x3=18,当然是正确的啦
答案应该是B,因为elseif(b)后面有个分号,所以第一个判断if(!a)到这里就结束了,最后一个else跟if(c)对应,C语言里面0为假,非0为真,由于已知c=0,所以会执行到最后一个else分
选B再问:能不能解释一下为什么?再答:其实我看错了应该选C,D的A的a+b是表达式不能作左值B项中(int)a+b是double类型的不能作%的除数CD是对的弱类型的变量可以赋给强类型的变量但是不能反
注意代码的结构,写得易懂一点代码如下:if(!a){x--;}elseif(b){//注意,这里没有任何代码}if(c){x=3;}else{x=4;}这样明白了没?
正确答案:B解释:A:应为X
D,A我用visualc++试过,说左操作必须为左值,就是说只能a=a+b,或a=b++;B显然被除数必须为整数.C除数和被除数不是同一类型.
做这道题目首先要明确以下几点运算符的优先级顺序是++大于+大于==大于=double→float高↑long↑unsigned↑int←——char,short低A.相当于a=((a+b)=(b++)