1,if(a=1)与if(a==1)的区别
首先,if(a=1) 等价于 a=1;if(a);
而a == 1,是判断a是不是为1;
if(sq)里面的分为两种情况,一种是sq为0,不执行if里面的代码内容;另一种是sq不为0,执行里面的代码内容。即为零与非零。若if(sq)没有带括号,则执行if下面一条代码。
举例说明:
if(a=0) 等价于 a=0;if(a);
#include <stdio.h>
#include <stdlib.h>
int main()
{int a=1,b=0,c=0;if(a=0)//没有括号,只执行if下面的一条操作 此时将0赋值给a,此时a为0,为0,跳过if语句b=1;c=2;printf("%d %d %d",a,b,c);//这里面会有个空格因为%d直接有个空格return 0;//输出的结果会是 0 0 2
}
#include <stdio.h>
#include <stdlib.h>
int main()
{int a=1,b=0,c=0;if(a=1)//没有括号,只执行if下面的一条操作 此时将1赋值给a,此时a为1,非0,执行if语句b=1;c=2;printf("%d %d %d",a,b,c);//这里面会有个空格因为%d直接有个空格return 0;//输出的结果会是 1 1 2
}
if(a==0) 等价于 判断a是否为0,若为0,为真,执行if语句;否则,不执行;
#include <stdio.h>
#include <stdlib.h>
int main()
{int a=1,b=0,c=0;if(a==0)//a不为0,则为false,不执行if语句b=1;c=2;printf("%d %d %d",a,b,c);//这里面会有个空格因为%d直接有个空格return 0;//输出的结果会是 1 0 2
}
#include <stdio.h>
#include <stdlib.h>
int main()
{int a=1,b=0,c=0;if(a==1)//a为1,则为true,执行if语句b=1;c=2;printf("%d %d %d",a,b,c);//这里面会有个空格因为%d直接有个空格return 0;//输出的结果会是 1 1 2
}
2,设x,y,z和t均为int型变量,执行以下语句:x=y=z=1; t=++x||(++y&&++z); 后x,y,z,t的值分别为__2,1,1,1__
解题思路:首先,括号优先级最高,逗号运算级最低,赋值运算符倒数第二低。优先级高,表示先结合,而不是先计算!!!
x,y,z的初始值为1,小括号内的先结合,当成一个整体。t=++x.之后,t和x均为2,由于或运算,有一则为一,(有一个为真,整体就为真,不需要往后继续运算了),所以x为1,t为1,y和z均没有变化。
2,sizeof();这个是一个数据类型,他可以将
未完待续…