一般赋值语句
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//看代码写输出————一般赋值语句
int main(void) {
int x = 3, y, z;
x *= (y = z = 4); printf("x=%d\n", x); //x=12
z = 2;
x = (y = z); printf("x=%d\n", x); //x=2
x = (y == z); printf("x=%d\n", x); //x=1
x = (y & z); printf("x=%d\n", x); //x=2
x = (y && z); printf("x=%d\n", x);//x=1
y = 4;
x = (y | z); printf("x=%d\n", x); //x=6
x = (y || z); printf("x=%d\n", x);//x=1
x = (y == z) ? 4 : 5;
printf("x=%d\n", x); //x=5
x = (y == z) ? 1 : (y < z) ? 2 : 3;
printf("x=%d\n", x); //x=3
return 0;
}
x=12
x=2
x=1
x=2
x=1
x=6
x=1
x=5
x=3
- x *= (y = z = 4); printf("x=%d\n", x); x为3,y,z没有被初始化,执行顺序是首先执行z=4,然后y=z,最后执行x*=y。所以x=3*4=12。
- x = (y = z); printf("x=%d\n", x); z的值为2,执行顺序y=z=2,x=y=2,所以结果x=2
- x = (y == z); printf("x=%d\n", x); ==是比较,判断y与z是否相等,若相等为1,不等为0,z与y都为2,所以为1,则x=1
- x = (y & z); printf("x=%d\n", x); &按位与操作,一种二进制运算,它在每一对相应的二进制位上进行操作,具体来说,对于两个二进制数,它们的按位与运算是对应位都为1,结果为1,其他为0,y与z都十进制是2,则二进制是10,结果为10,输出的二进制x=10,十进制为2。
- x = (y && z); printf("x=%d\n", x); &&逻辑与操作,一种在布尔逻辑或编程中用于测试多个条件是否同时成立的运算符。与按位与不同,逻辑与是对逻辑值(通常是true或false)进行操作,执行顺序y和z做逻辑与运算结果赋值给x。此时y和z的值都不是0,因此结果为1,所以x=1。
- x = (y | z); printf("x=%d\n", x); | 按位或操作,一种二进制运算,只要对应位中有一个为1时,结果为1,两个位都为0时,结果为0;此时y=4,二进制为0100,z为2,二进制为0010,y | z结果为0110,赋值给x,则x对应的十进制为6
- x = (y || z); printf("x=%d\n", x); || 逻辑或操作,是一种在布尔逻辑或编程中用于测试多个条件中是否至少有一个成立的运算符。如果两个操作符中至少有一个是true,则结果是true,如果两个操作数都是false,结果为false。此时y的值为4,z 的值为2,做逻辑或运算的结果赋值给变量x,此时y和z都不是0,因此结果为1,所以x=1。
- x = (y == z) ? 4 : 5; printf("x=%d\n", x); 三目运算,y与z是否相等,等于则x输出4,不等则输出5,y为4,z为2,所以不相等,所以x=5;
- x = (y == z) ? 1 : (y < z) ? 2 : 3; printf("x=%d\n", x); y==z相等输出1,不等则继续判断y是否小于z,明显不相等,则继续进行判断,y=4,z=2,所以是y大于z,则输出3
总结:
== 是比较
& 按位与 二进制对应位都为1,则1,否则为0
&& 逻辑与 都不为0则为1
| 按位或 二进制对应位有一个为1,则1,全为0则0
|| 逻辑或 有一个为true则为true,全为false则false
三目运算:进行判断,判断成立输出前面否则输出后面
c++域操作符
#define _CRT_SECURE_NO_WARNINGS
//看代码写输出 —— C++域操作符
#include <stdio.h>
int value = 0; //全局变量
void printvalue() {
printf("vlaue = %d\n", value);
}
int main() {
int value = 0; //局部变量
value = 1;
//打印的是局部变量的值
printf("value=%d\n", value); //1
//::域操作符来直接操作全局变量 c中不支持这个操作符 cpp支持
::value = 2;
//打印的是全局变量的值
printvalue(); //2
return 0;
}
结果
value=1
vlaue = 2
分析
- 若文件名后缀.c,则::value = 2;报错无法运行
- 若文件名后缀.cpp,则可以运行 在c++中可以通过域操作符::来直接操作全局变量