C语言问题,求解析,谢谢

若已有定义:int a=2,b=3,c=4;则表达式!(a+b)-c+1||c+b/2的值是()。
A.-2 B. -1 C.0 D.1

选D
此题第一个考察点是优先级,即算术运算符大于逻辑运算符,第二个考察点是两个整数相除仍然是整数,即舍掉小数点后面的部分,第三个也是最重要的一个考察点是逻辑的运算,即在C语言里,非0的数我们认为它的逻辑值是1,就是它是真的,而整数0的逻辑值是0,就是它是假的,所以本题左边是1 ,右边也是1,逻辑或有一边是1就得1,所以选D。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-10
答案选择D
理由:这里考察的是运算符的优先级知识,以及整数相除的知识!
理解两点:
1、算术运算符的优先级高于逻辑运算符
2、整数相除的结果还是整数,小数部分会被舍弃!追问

请问最后结果是不是 非2或5?为什么是真呢?

第2个回答  2012-01-10
d

这样的表达式最后的结果只是0或1.所以排除A和B。
|| 只要有一个为1整个表达式就为1.
C语言没有逻辑型变量只能用1表示真0表示假。
而次表达式的最后运算结果只是真和假两种结果。
第3个回答  2012-01-10
怎么简单不会做?脑抽了吧追问

简你妹

第4个回答  2012-01-10
d

C语言问题,求解析,谢谢
此题第一个考察点是优先级,即算术运算符大于逻辑运算符,第二个考察点是两个整数相除仍然是整数,即舍掉小数点后面的部分,第三个也是最重要的一个考察点是逻辑的运算,即在C语言里,非0的数我们认为它的逻辑值是1,就是它是真的,而整数0的逻辑值是0,就是它是假的,所以本题左边是1 ,右边...

C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因
所以a<b?a:c<d?c:d 可以看成 a<b?a: (c<d?c:d) 1 < 4 ? a : (c < d ? c:d)括号内的表达式也可以看做是一个元素 因为 a = 1 b = 4 所以 条件 a < b 成立 所以选前者 a 答案就是 A) 1

c语言问题求解!!!谢谢!!!
2、字符串长度问题。字符串赋初值时,系统自动给字符串分配一个空间存储‘\\0’字符结束判定字符。他是一个隐藏字符。求字符长度时,strlen求字符长度时会自动忽略‘\\0’,但sizeof不会,所以求字符长度时,sizeof() = strlen() +1;3、自增运算符的运算机制问题。自增运算符放在变量后面,如a++,...

简单C语言问题,求解析
结果为D.无定值,首先c作为fun函数的输入参数,fun函数会将c复制一份进行fun函数内部的操作,fun函数内部c=2*3,但是fun函数运行结束后的fun函数内部的c就被清除掉了,而现在main函数中的c还是你初始化时的c,因此是没有定值的。如果写成fun(2,3,&c)的话,答案就是C,因为此时你给c加了引用...

请问这个c语言程序题怎么做呀,能具体解释一下吗,谢谢啦
!(逻辑取反),C语言中非零为真 !x==0,只有当x为非零数成立,成立,即为真。当x为0时候,表达式不成立,为假。结论:x为0即为假,x不为0为真。B x :即x非零为真,正确。C x!= 0 :当x为0的时候为假,x不为0的时候成立为真,正确 D x>0 || x<0 : 当x为0的时候为...

C语言的一个概念性问题,我很难理解。希望C理解的深的给我详细解释解释...
2.然后,这里一堆的东西不好看,做个简化:因为a是二维数组的名字,故a+i是第i行的行指针,相当于一个一位数组的数组名。把a+i记作x,那么(a+i)[j] 就可以记成 x[j]。3.由取下标运算的含义:x[j]实际上是*(x+j),即先找地址后进行间接运算。而x是a+i,代进去就得到*(a+i+j)...

C语言 求解析
解释和程序如下(见图).

关于2级C语言的几个问题(详细解答一下,谢谢!)
(1)选A char x='A'; 是定义一个变量x并赋值为字符A x=(x>'A'&&x<='Z')?(x+32):x; 这是个选择语句,括号里的x>'A'&&x<='Z'表示条件,意思就是在A到Z之间的字母,也就是所有大写字母,因为是 >'A'不是>=‘A',所以不包括A,当条件满足时就执行x=x+32,大写字母 +32就...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..
第三项 第一项的结果不正确。第二项和第四项结果等同都是指向指针的指针操作。可以将二维数组看成一个双重指针,第一个中括号是一个一重指针。比如说a[n][m]中a[0]是一个指向a[0][m]数组首位a[0][0]的指针,而a则是指向指针数组*a[n]的首位a[0]的指针。这样我们来看B选项,*(a+2)...

C语言求答案与解析 谢谢!
答案是第一个空 i 或者a[i], 第二个空a[i], 第三个空是0;在这个程序中,他的实现逻辑是,先把这个数组a填上值,也就是这一句 for(i = 2; i <= n; i ++)a[i] = i;之后,从初始值2,第一轮循环是,将2以及2的倍数都将其改为0,这样就间接的实现将2以及2的倍数都删掉的...

相似回答
大家正在搜