运算符:
/*运算符 逗号,关系及逻辑运算符
(1).优先等级:逗号15(所有运算符中优先级最低);逻辑与11,逻辑或12;等于,不等于7,关系运算符(除了等于和不等于之外)6
(2).在C语言中,优先级并不完全决定运算顺序;
1.只有4种运算符(&&,||,逗号,条件运算符)规定了运算顺序,必须自左往右
2.操作数的求值顺序,不同的编译器可能有所不同---不要依赖任何不可移植的操作,应避免出现
(3).&&和||都先计算左边表达式的值,如果左边表达式的值能够确定整个表达式的值,那么右边表达式的值就不会被计算
*/
#include <stdio.h>
int main()
{
//逻辑与运算符
int a1=0;
0 && (a1 = 3); //&&操作的左值为0,整体表达式的值为0,右边表达式的值将不会被计算
printf("a1的值为%d\n",a1); //所以输出a1的值为0
int a11=0;
1 && (a11 = 3); //&&操作从左向右计算,左操作数为1,右操作数被计算
printf("a11的值为%d\n",a11); //输出a11的值为3
while(1 && (a11 = 3)) //表达式的值为真
{
printf("表达式的值为真\n");
break;
}
//逻辑或运算符
int a2 = 0;
0 ||(a2 = 3); //左操作数为假,整体表达式为假,右操作数将不会被计算
printf("%d\n",a2); //输出a2的值为0;
return 0;
}
条件运算符
/*
(1)条件运算符是C语言中唯一的三目运算符,其优先级为13
(2)C语言中条件运算符的运算方向也是必须自左向右的
*/
#include <stdio.h>
int main()
{
1?printf("哈哈\n"):printf("呵呵\n");
/* //与上一句等价
if(1)
printf("哈哈\n");
else
printf("呵呵\n");
*/
1?printf("1\n"),printf("2\n"):(printf("3\n"),printf("4\n"));
/* //等价上一句
if(1)
{
printf("1\n");
printf("2\n");
}
else
{
printf("3\n");
printf("4\n");
}
*/
0?printf("A\n"):0?printf("B\n"):printf("C\n");
/* //与上一句等价
if(0)
printf("A\n");
else
{
if(0)
printf("B\n");
else
printf("C\n");
}
*/
/* //与上一句等价
if(0)
printf("A\n");
else if(0)
printf("B\n");
else
printf("C\n");
*/
return 0;
}