⑴ c语言里边m++与++ m区别是啥,求形象解答,谢谢!
若m=6;
a=m++;
则执行完该语句后a=6,m=7(赋值运算取自加之前的值)
若m=6;
a=++m;
则执行完该语句后a=7,m=7(赋值运算取自加之后的值)
如果单纯有一行是
m++或者++m,没有赋值或取值,那么这两句实际结果是一样的,都是m的值增加了1。
(1)c语言m等价于什么扩展阅读:
优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
基本的优先级需要记住:
指针最优,单目运算优于双目运算。如正负号。
先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7
⑵ C语言习题,请高人指导解答!
1. sizeof(float)是(B)。
A. 双精度型表达式
B.一个整型表达式
C. 一个函数调用
D. 一个不合法的表达式
满分:5 分
2. 对于条件表达式(M)?(a++):(a--),其中的表达式M等价于(B)。
A. M==0
B. M==1
C. M!=0
D. M!=1
满分:5 分
3. 若有定义:intx=7;floata=2.5,b=4.7;则表达式a+x%3*(int)(a+b)%2/4的值是(A)。
A. 2.5
B. 2.75
C. 3.5
D. 0
满分:5 分
4. 下面四个选项中,均是C语言关键字的选项是(B)。
A. auto enumin clude
B. switch typedef continue
C. signenionscanf
D. if struct type
满分:5 分
5. 下列关于switch语句和break语句的结论中,只有(B)是正确的。
A.break语句是switch语句的一部分
B. 在switch语句中可以根据需要使用或不使用break语句
C. 在switch语句中必须使用break语句
D. "以上三个结论有两个是正确的"
满分:5 分
6. 在x值处于-2到2,4到8时值为“真”,否则为“假”的表达式是(全都不是)。
A. (2>x>-2)||(4>x>8)
B. ((x<=-2)||(x>=2)||((x>4)||(x>=8))
C. (x<2)(x>=-2)(x>4)(x<8)
D. (x>-2)(x>4)||(x<8)(x<2)
满分:5 分
7. 以下是正确的C语言标识符是(B)。
A. #define
B. _123
C. %d
D. \n
满分:5 分
8. 以下叙述中不正确的是(B)
A. 在C程序中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B. 在C程序的函数中,最好使用全局变量
C. 在C程序中,形参只是局限于所在函数
D. 在C程序中,函数名的存储类别为外部
满分:5 分
9. 已知字母A的ASCII码为(65)10,变量ch1为字符型,则执行语句ch1='A'+'6'-'3';后,ch1中的值为(B)。
A. D
B. 68
C. 一个不确定的值
D. C
满分:5 分
10. 若有定义:intA[3][4];能表现数组元素A[1][1]的是(没有!C有点像,是不是写错了?(*(A+1))[1]正确)
A. (A[1]+1)
B. *(A[1][1])
C. (*(A+1)[1])
D. *(A+5)
满分:5 分
11. 设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是(B)。
A. 0~255
B. 0~65535
C. -32768~+32767
D. -256~+255
满分:5 分
12. 若x为float型变量,则以列程序段结果是(B)x=1234.6789;printf(“%-2.1f”,x);
A. 输出格式描述符的域宽度不够,不能输出
B. 输出为1234.7
C. 输出为1234.6
D. 输出为-1234.6
满分:5 分
13. 下面四个选项中,均是合法转义字符的选项是(A)。
A. \'' '\\' '\n'
B. "\''\017''\""'"
C. \018''\f''xab'
D. \\0''\101''xlf'
14. 有两个字符数组a、b,则以下正确的输入语句是(没有正确的)。
A. gets(a,b);
B. "scanf(""%s%s"",a,b);"
C. "scanf(""%s%s"",a,b);"
D. "gets(""a""),gets(""b"");"
15. 下列四组选项中,均不是C语言关键字的选项是(A)。
A. define IFtype
B. get cchar printf
C. include scanf case
D. whilegopow
⑶ C语言中m+=i++表示什么意思
m+=i++ 这是赋值运算符与自增运算符的综合使用,该表达式等价于如下2条表达式:
m=m+i;
i++;
如果表达式换成m+=++i,则改表达式等价于:
i++;
m=m+i;
//因为是++i,所以i的值需要先进行加1,之后再参与表达式的运算;而i++是先将i的值代入表达式计算,表达式计算完后,i的值再加1
⑷ c语言m=n++
关于自增自减运算,很多书籍没有把问题讲清楚,在C语言里是这样的:
1.后置运算:k++表示先运算,后自加。
意思是遇到k++了,我先把当前的k的值拿来参加运算,后面再去管它的自加。
那么,【“后面”后到什么程度呢?要后到当前的语句执行完,即遇到分号;表示
语句执行完了,所以k才自加1。】
如:int k=5,b=0;
b=k++;的意思就是,先算b=k(即b=5),遇到分号;表示语句结束,k才自加1,即k变为6。
2.前置运算:++k表示先自加,后运算
这个意思就是遇到++k了,先把k的值加了1,再往后执行别的。
如:int k=5,b=0;
b=++k;的意思就是,先把k自加1,即k为6,再算b=k(即b=6)。
掌握好这两点,m++和++m也是一样的道理。
看完原理:
例如 原值 m=1 n=2
m++==n
先运算再加1
1==2
结果就是0也就是false,最后m=2 n=2
================
++m==n
就是m先加1 再运算
2==2
结果就是1也就是true ,最后m=2 n=2
⑸ 对于条件表达式(M)(a++):(a--),其中的表达式M等价于
这个三元运算符就是if(M)...的意思,其实就是M为真的意思,在C语言中M为真就是M非零,而零就是假,所以就是M非假的意思,因此说的是对的。
对于条件表达式(M)?(a++):(a--),其中的表达式M等价于C
A、M = = 0
B、M = = 1
C、M ! = 0
D、M ! = 1
(5)c语言m等价于什么扩展阅读
若有多个条件表达式像这样连在一起:x=<表达式1>?<表达式2>:<表达式3>?<表达式4>:<表达式5>···执行顺序是从右到左依次判断再求出最后的x,即所谓的右结合性。
注意:如果最后一个表达式是逗号表达式,注意逗号表达式的优先级比条件表达式的优先级低,实际运用中应该避免这种情况以免出错。
例如: int a=1,b=2,c=3,d=4;则条件表达式x=a<b?a:c<d?c:d;的值为:1
⑹ c语言 问号表达式
你的意思就是如果M为真,也就是说M!=0,就执行a++,如果M为假,也就是说M==0,就执行a--。所以这个M就相当于判断M是否等于0;如果还看不懂的话,你可以去看下C语言书上的条件表达式的那章,很简单的,好好加油,祝你成功!~
⑺ 表达式(M)(a++):(a--),其中M等价于()A、M==0;B、M==1;C、M!=0;D、M!-1
一般来说,一个变量只有在不为0的时候才可以看成是true,A的选项实际上相当于!M,也就是false,所以只能选C。
⑻ C语言题!M与下列那个表达式等价 A.=0 B.=1 C.M==0 D.
!M:非M为真,就是M为假.C语言中把非0当做真,0当做假,M为假就是判断M为0.所以判断!M为真,就是判断M==0.