#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()//
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;
printf("a=%d\n", a);
printf("b=%d\n", b);
printf("c=%d\n", c);
printf("d=%d\n", d);
}
//i = a++ && ++b && d++;
// i=0++ && ++2 && 4++
//0++先运算后++,就是先去做&&运算,&&运算时候只要
//一个为0,结果为0,所以0++之后的&& ++2 && 4++,
//是没有算的,b,c,d还是原来的值
//0++这是自增变成1
//最后结果就是a=1,b=2,c=3,d=4
//i = a++ && ++b && d++;
// i=0++ && ++2 && 4++
//0++先运算后++,就是先去做&&运算,&&运算时候只要
//一个为0,结果为0,所以0++之后的&& ++2 && 4++,
//是没有算的,b,c,d还是原来的值
//0++这是自增变成1
//最后结果就是a=1,b=2,c=3,d=4
逻辑与,这个事,只要是&&左边为0,右边就不算了
为什么是左边,是因为程序是从左往右,从前往后执行
//------------------------------------------------------------------------------------------------------
这次把a的初始从0改成1,是怎样的呢?
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()//
{
int i = 0, a =1 , b = 2, c = 3, d = 4;
i = a++ && ++b && d++;
printf("a=%d\n", a);
printf("b=%d\n", b);
printf("c=%d\n", c);
printf("d=%d\n", d);
}
//i = a++ && ++b && d++;
// 1 && 3 && 4 后置++数值直接落下来,前置++先运算再落下来 ——<第一步>
// 2 && 3 && 5 把后置++没运算完的部分,运算完——<第二步>
// a=2 b=3 c=3 d=5 统计结果——<第三步>
//i = a++ && ++b && d++;
// 1 && 3 && 4 后置++数值直接落下来,前置++先运算再落下来 ——<第一步>
// 2 && 3 && 5 把后置++没运算完的部分,运算完——<第二步>
// a=2 b=3 c=3 d=5 统计结果——<第三步>
//-------------------------------------------------------------------------------------------------------
我们把&&运算改作或运算,又会是什么结果呢?
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()//
{
int i = 0, a =1 , b = 2, c = 3, d = 4;
i = a++ || ++b || d++;
printf("a=%d\n", a);
printf("b=%d\n", b);
printf("c=%d\n", c);
printf("d=%d\n", d);
}
//i = a++ && ++b && d++;
// 1 && 3 && 4 后置++数值直接落下来,前置++先运算再落下来 ——<第一步>
// 2 && 3 && 5 把后置++没运算完的部分,运算完——<第二步>
// a=2 b=3 c=3 d=5 统计结果——<第三步>
//i = a++ || ++b || d++;
// 1 || 3 || 4 后置++数值直接落下来,前置++先运算再落下来 ——<第一步>
// 2 || 3 || 5 把后置++没运算完的部分,运算完——<第二步>
//注意运行到这一步的时候,算出了a++是2,就是为真,或运算只要运算符前面为真了,
//前面的真就是结果了,所以a++后面的部分是不会运算的
// a=2 b=2 c=3 d=5 统计结果——<第三步>
//i = a++ || ++b || d++;
// 1 || 3 || 4 后置++数值直接落下来,前置++先运算再落下来 ——<第一步>
// 2 || 3 || 5 把后置++没运算完的部分,运算完——<第二步>
//注意运行到这一步的时候,算出了a++是2,就是为真,或运算只要运算符前面为真了,
//前面的真就是结果了,所以a++后面的部分是不会运算的
//所以最后结果就是a=2 b=2 c=3 d=5 统计结果——<第三步>
小结:
若是&&关系,&&左边为假,右边就不要算了;
若是||关系,||左边为真,右边就不要算了