补充两个作业本上的自增自减题:
(1)#include<stdio.h>
main()
{
Int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“i=%d,j=%d,m=%d,n=%d/n”, i,j,m,n);
}
i先自加为9,再把值附给m,m为9.
j先把值拿出附给n,n为10,j再自加为11.
所以答案为i=9,j=11,m=9,n=10.
(2)#include<stdio.h>
main()
{
int x=2,y=3,z;
z=(x++,y++);
printf(“x=%d,y=%d,z=%d/n”, x,y,z);
}
逗号表达式从左向右运行,取最后一个表达式的值。
所以先x++(这里没有赋值的语句,所以这里x++和++x没有区别),x为3,再y++(这里要把y的值先取出附给整个逗号表达式,然后y自己的值再加一个1)所以整个逗号表达式的值为3,y的值为4,把整个逗号表达式的值附给z,z的值为3.
所以最后的答案为x=3,y=4,z=3.
1、逻辑运算符和逻辑表达式
优先次序:!(非)→算术运算符(+ - * /)→关系运算符(> < ==)→&&(与)→||(或)→赋值运算符
|| (或运算符)
A || B || C,如果A为0则继续向右判断B,如果A为1,那后面就不用算了,整个表达式的值为1,如果一直算下去都是0的话,整个的表达式的值就是0。
&&(与运算符)
A && B && C,刚好相反,如果出现一个0的话后面的就不用算了,整个表达式的值为0,如果一直算下去都是1的话,整个表达式的值就是1了。
作业本24页的7、8题:a=1,b=1,c=1,d
1、 d=--a||--b||--c 类似于A || B || C
从左向右运算:先--a,a先把a的值减1再把a的值取出赋给第一个语句段,a的值为0,A的值为0,所以继续看下去,--b,还是一样,b=0,B=0,下一个也是,最终