设有定义intx=1,以下表达式中,与其他选项值不同的是
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 16:07:15
LZ注意,先不管是不是输出对于(int)(x*100+0.5)/100.0这个算式被强制转换为整型的是分子部分,而分子除以100.0这个浮点型的数据之后整个算式就又变回浮点型了,要输出的数据真是整型也
选B因为&a是一个指向数组的指针,而p是一个指向整型的指针,二者不是同一个概念.
1)这个是要求什么表达式的值呢?后面的除2(/2)完全没有作用啊,执行后x=2,因为x是整型;若是x=((float)(y)+0.5)/2,执行后x=1;2)逗号(,)运算符求职顺序为自左至右,所以,
选c,p[0]指向a[1],也就是&a[1][0],二维数组在内存中的存储方式和一维数组一样也是顺序存放的,所以p[0]+1就是a[1][0]的下一个元素
n是整数,p是整数指针,q是双重指针.A:p=1属于将地址1赋给p,非法.B:*q=2这里*q相当于一个整数指针,问题同上,非法.C:q=p相当于把p的地址赋给q,不能说错,但是不同维数的指针互相赋值
答案为D*aa[2]数组指针aa[0]aa[1]为数组名,分别为“abcd”"ABCD"的首地址也就是‘a’和‘A’的地址(详情参考指针那方面知识)A选项应该为“abcd”和“ABCD”的地址B选项是
a[1][2]是第二行第三个所以a[1][2]=6你的数组是这样的123456789
(C)选项正确!str1是常量,指向"string"串的首地址,不能改变,所以(A).错;(B)str2="China"只可以定义时赋值,即charstr2[]="China";(B)相当于给常量赋值
char*类型的数组指的是每个元素都是char*指针char*指针是指向字符类型的所以aa数组的两个元素各自存放了字符'a'和‘A’的地址A)答案不对aa数组元素是两个char*字符类型的指针B)aa
C.if(a>b)c=a;if语句已经结束了a=b;b=c;是俩个单独的表达式c:a=2b=3c=3其他的都没变
D不能这样理解.写法是合法的,只是p[6]是下标为6的元素,不是元素指针,要写成&p[6]就对了.所以错误.其他都分析得对.
使用了逗号操作符,实际上等于:intn=0;int*p=&n;int*q;所以,n是整型,p,q是整型指针.a错了,c也错了,*p是解引用操作,得到的是p所指向的内存区域的值.它不能作为一个“左值”(
(x=1,y=z=2,y++,z++)逗号表达式按顺序从左到右执行,最后整个表达式返回最右值.所以最后返回z的值2,然后z再自加1.
intx=1;x--
A错intx[][3],它的列下标为0~2,但它的行下标的取值范围没有显式给出.而初始化只是{0},系统无法确定该数组的长度,因此在编译时无法为它分配一定大小的存储空间.
结果其实就是x=z++先赋值再自加,结果是2a=(b,c)这种运算,实际上就是a=c当然前面的运算也是要算的就这个题就是相当于x=1;y=z=2;y++;x=z++
AC当返回值为真时,值为相当于为1.A和C都为真.B中a/2是整数相除,在结果为2,和b相等,内部值为1,但外面有个!,所以为假.D中
宏定义就是把出现的N和Y(n)用后面的表达式替换掉而已所以这里的z=2*(N+Y(5+1));等价于z=2*(3+4*6)=54所以选D
y=3x++表示“先用后加”if(x++)y=1+x;因为x=0,所以这一步跳过,但是执行完这一步,x变为1elsey=2+x;成立,y=2+x被执行,所以y=3再问:为什么x=0时这一步跳过啊再答: