逻辑或(||)的短路求值

i = a++ || ++b || d++;
printf("a = %d\n b = %d\n c = %d\n d = %d\n", a, b, c, d);

  • 逻辑或(||)的规则
    逻辑或运算从左到右依次判断表达式,只要遇到一个表达式结果为 1(真),就会 “短路”,直接停止后续表达式的计算(因为逻辑或要求只要有一个为真,整体结果就为真,后续无需再判断 )。

  • 代码执行过程

    • 先计算 a++a++ 是后置自增,先使用 a 的当前值(1)参与运算,然后 a 自增为 2
      由于 a++ 结果为 1(真),根据逻辑或的短路特性,后面的 ++b 和 d++ 不会执行
    • 因此,i 最终被赋值为 1(逻辑或运算整体结果为真) ,且 bd 的值保持初始状态(b=2d=4 ,因为 ++b 和 d++ 没执行 )。
  • 按格式输出变量值:

    • a 因 a++ 自增为 2
    • b 未执行 ++b,保持 2
    • c 从未操作,保持 3
    • d 未执行 d++,保持 4 。

7. for循环

7.1 语法形式

for(表达式1; 表达式2; 表达式3)
//表达式1 用于循环变量的初始化
//表达式2 用于循环结束条件的判断
//表达式3 用于循环变量的调整

![[image 19.png|310x401]]

int main() 
{ 
	int i = 0;//创建变量的初始化
	for (i = 1; i <= 10; i++) //循环变量的初始化,两码事
	{ 
		printf("%d ", i); 
	} 
	return 0; 
}

练习:1~100之间3的倍数之和

int main()
{
	int sum = 0;
	for (i = 0; i % 3 = 0 && i <= 100;sum+=3)
	{
		printf("%d",sum);
	}
}