一、其他赋值运算符
除了最基本的赋值运算符=,C还有多个赋值运算符
a += b | 等于 | a = a + b |
a -= b | 等于 | a = a - b |
a *= b | 等于 | a = a * b |
a /= b | 等于 | a = a / b |
a %= b | 等于 | a = a % b |
这些赋值运算符的优先级与赋值运算符=同样低
运算符优先级:赋值运算符 < 关系运算符 < 算术运算符
二、逗号运算符
逗号运算符最常在for循环中使用,可以在一个for循环中使用多个初始化或更新表达式,扩展for循环的灵活性
示例代码:
#include <stdio.h>
int main(void)
{
int a;
int b;
for(a = 0, b = 10; a < 10; a++, b += a)
{
printf("%10d %10d \n", a, b);
}
return 0;
}
运行结果:
逗号运算符的属性:
1)被其分开的表达式按照从左到右的次序进行计算,逗号是个顺序点,逗号左边产生的副作用在程序运行到逗号右边之前生效
2)整个逗号表达式的值是右边成员的值
示例代码:
#include <stdio.h>
int main(void)
{
int a;
int b;
int c;
for(a = 0, b = 10; a < 10; a++, b += a)
{
c = (a++, b += a); // 逗号运算符
printf("%10d %10d %10d\n", a, b, c);
}
return 0;
}
运行结果:
示例代码:
#include <stdio.h>
int main(void)
{
int a = (1, 2);
printf("the value of a is %d \n", a);
}
运行结果:
逗号也可被用于分隔符,此时逗号不再是运算符:
int a, b; // 逗号作为分隔符
逗号运算符把两个表达式链接为一个表达式,并保证最左边的表达式最先计算,通常被用在for循环的控制表达式中以包含多个信息,整个表达式是右边表达式的值
三、退出条件循环:do while
while循环和for循环为入口条件循环,在每次执行循环前检查判断条件
do while循环为退出条件循环,判断条件在执行循环后进行检查
do while循环的一般形式:
do
statement // statement可以是简单语句或复合语句
while(expression); // do while循环本身是一个语句,因此结束时需要分号
do while循环至少会被执行一次,因为在循环体结束后才进行判断
示例代码:
#include <stdio.h>
int main(void)
{
int i = 1;
int j = 1;
while(i < 1)
{
i++;
}
do
{
j++;
} while (j < 1);
printf("the value of i is %d \n", i);
printf("the value of j is %d \n", j);
return 0;
}
运行结果:
注意:应该把do while循环仅用于那些至少需要执行一次循环的情况,否则应使用while循环或for 循环
四、循环的选择
1)首先分析确定使用入口条件循环或退出条件循环,整体上入口条件循环更适合大多数应用需求
2)对于入口条件循环,根据个人喜好选择while循环或for循环,二者可以实现的功能是相同的