C++入门选择题,请解释结果,谢谢!
1.设有inti;则表达式i=1,++i,++i||++i,i的值为()。A.1B.2C.3D.42.设有inta[]={10,11,12},*p=&a[0];则执行完*...
1.设有int i;则表达式i=1,++i,++i||++i,i的值为( )。
A.1 B.2 C.3 D.4
2.设有int a[ ]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是( )。
A.10,11,12 B.11,12,12
C.10,12,12 D.11,11,12
3.设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&k 的值为( )。
A.1 B.2 C.63 D.0
&&是逻辑与运算符,&是什么意思?可以举例说明下吗?谢谢! 展开
A.1 B.2 C.3 D.4
2.设有int a[ ]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是( )。
A.10,11,12 B.11,12,12
C.10,12,12 D.11,11,12
3.设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&k 的值为( )。
A.1 B.2 C.63 D.0
&&是逻辑与运算符,&是什么意思?可以举例说明下吗?谢谢! 展开
展开全部
&是按位与运算符,它的规则是:1&1=1 1&0=0 0&0=0,比如2&3,2变成二进制是0000 0010,
3变成二进制是0000 0011。两者按位与就是0000 0010,换回来是2.
第一题,中要注意||是短路运算,也就是说,||前面的表达式为真,则后面的表达式就不再计算,所以是C:3
第二题,p保存了a[0]的地址,*p++是++优先结合所以可看成是*(p++),p指针向后移了一位,p指向了a[1]的地址,*是取值,但无操作,无视。*p+=1,+=优先级低先结合*所以成了(*p)+=1,先取a[1]的值,再对其加1.
3变成二进制是0000 0011。两者按位与就是0000 0010,换回来是2.
第一题,中要注意||是短路运算,也就是说,||前面的表达式为真,则后面的表达式就不再计算,所以是C:3
第二题,p保存了a[0]的地址,*p++是++优先结合所以可看成是*(p++),p指针向后移了一位,p指向了a[1]的地址,*是取值,但无操作,无视。*p+=1,+=优先级低先结合*所以成了(*p)+=1,先取a[1]的值,再对其加1.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询