设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。 (2分) 
A. 0 B. 1 C. 2 D. 3
答案是A

解决方案 »

  1.   

    答案应该是C(m=a>b)&&(n=c>d)
    执行顺序 
    1、a>b=0
    2、m=0
    因为m=0, 0&&任意数,结果还是0,ide优化了,n=c>d应该不会被执行。以为n保持原值。
      

  2.   

    则逻辑表达式(m=a>b)&&(n=c>d)运算后,不改变变量的原值。
    答案是C,值还是2。如果题目删除"逻辑表达式",经过赋值运算,c>d的值=0
    答案是A,值还是0。
      

  3.   

    答案是C
    过程:
    1. (m = a > b)
        1.1 a > b 值为0
        1.2 m = 0 值为0
    2. 0 && (n = c > d)
    由于0与任何数都为0 故 (n = c > d)不会计算,直接返回0
    所以结果是 n = 2
      

  4.   

    好奇一下:0 && NULL 的结果是0还是NULL?
      

  5.   

    NULL在语义上是空指针,相当于Pascal的nil,在C++中可以把NULL作为整数0使用,早期定义中NULL实际就是0,后来C++11中引入了nullptr常量(就是nil的C++版本),NULL在几乎所有C++11兼容编译器实现中都定义为nullptr,但是仍然可以作为整数0使用。
    严格来说,0 && NULL的结果是false,因为表达式的类型是bool,但是在C++中,false、nullptr、整数0是可以隐含类型转换的,所以也可以说是0或者nullptr或者NULL(因为NULL的宏定义要么是0要么是nullptr)。