【关系运算符】
1. 六大关系表达式
在C语言中,关系表达式用于比较两个表达式的大小关系,以下是六大关系表达式:
- `>`:大于
- `>=`:大于等于
- `<`:小于
- `<=`于等于
- `==`:等于
- `!=`:不于
2. 区分‘=’和‘==’
在C语言中,`=和`==`有着不同的含义和使用场景:
- `=`:赋值运算于给量赋予值。例,`int x = 5;`,这行代码的意思是将5赋值给变量x。
- `==`:相等运算符,用于比较两个表达式的值是否相等。例如,`if (x == 5)`,这行代码的意思是比较变量x的值是否等于5。
需要注意的是,虽然`=`和`==`看起来相似,但它们的用途完全不同。如果你想要比较两个变量的值是否相等,你应该使用`==`,而不是`=`。如果你想要给变量赋值,那么你应该使用`=`。错误的理解和使用这两个运算符可能会导致程序出现错误的行为[1][2]。
3. 注意事项
当你使用`==`进行比较时,你需要确保你的比较对象是常量或者已知的值,而不是另一个变量。这是因为`==`运算符的目的是比较两个表达式的值是否相等,如果你的比较对象是未知的变量,那么你无法确定它们是否相等。此外,如果你正在比较的是一个变量和一个常量,你需要确保常量的类型和变量的类型相同,否则编译器会抛出错误[1][2]。
【条件操作符】
4.三目运算符
在C语言中,三目运算符是一种特殊的运算符,它允许我们根据一个条件表达式来选择两个不同的值中的一个。三目运算符的基本语法如下:
表达式1 ? 表达式2 : 表达式3
这里,`表达式1`是一个条件表达式,如果它的值为真(非零),则整个表达式的值为`表达式2`的值;否则,整个表达式的值为`表达式3`的值。
5.三大逻辑运算符
C语言中的三大逻辑运算符分别是`&&`(逻辑与)、`||`(逻辑或)和`!`(逻辑非)。下面是它们的真值表:
| A | B | A && B | A || B | !A |
|---|---|----------|---------|-----|
| T | T | T | T | F |
| T | F | F | T | F |
| F | T | F | T | T |
| F | F | F | F | T |
其中,T代表真(true),F代表假(false)。这些运算符用于构建复杂的逻辑表达式,以便进行更精确的条件判断。
6.短路
在C语言中,短路是指一种特殊的行为,当使用逻辑运算符`&&`或`||`进行计算时,如果已经能够确定整个表达式的值,那么就不会再继续计算剩余的部分。这种行为被称为短路。例如,对于表达式`A && B`,如果`A`为假,那么无论`B`的值如何,整个表达式的值都将是假,因此没有必要再计算`B`的值。同理,对于表达式`A || B`,如果`A`为真,那么整个表达式的值就已经确定,因此没有必要再计算`B`的值。
【switch】
7. if-else如何改写为switch语句?
在C语言中,语句可以被语句替换,特别是当你需要根据一个变量的不同值选择不同的执行路径时。以下是语句转换为语句的一个例子:if-else,
switch,
if-else,
switch
if (condition1) {
// do something
} else if (condition2) {
// do something else
} else {
// do another thing
}
转换为语句后,可以表示为:switch
switch (variable) {
case value1:
// do something
break;
case value2:
// do something else
break;
default:
// do another thing
break;
}
在这个例子中,是你想要检查的变量,和是该变量可能取的值。每个语句后面跟着一个关键字,用于结束当前的块。如果没有匹配的,那么会执行部分的代码。
8. switch后的表达式类型是什么?
switch
语句后面的表达式必须是整型表达式。这是因为语句是基于整型表达式的值来进行分支选择的switch。
9. case后面值的类型是什么?(注意case和值之间一定要有空格)
case
后面的值必须是整型常量表达式。这些常量表达式用来匹配语句后面表达式的值。
10. default?swtich的运行顺序是什么?
default
关键字是语句的一部分,它表示默认情况。如果在所有的语句中都没有匹配的值,那么就会执行部分。语句的执行顺序是从上到下,一旦找到匹配的,就会执行对应的代码块,并且不会继续向下执行,除非使用了关键字来退出块。
【循环语句】
11.while 与 if 语句的区分
while 和 if 都是 C 语言中的基本语句类型,它们分别用于循环和条件判断。while 语句用于在满足特定条件时重复执行代码块,而 if 语句用于在满足特定条件时选择执行不同的代码块。
12.while 语句的基本格式是:
while (condition) {
// 循环执行的语句
}
13.if 语句的基本格式则是:
if (condition) {
// 如果条件为真,则执行的语句
} else {
// 如果条件为假,则执行的语句
}
两者的主要区别在于 while 语句会在条件为真时反复执行代码块,而 if 语句仅在条件为真时执行一次代码块。
14.while 的执行流程
while 循环的执行流程是:首先评估 condition 表达式的值,如果为真(即非零),则执行循环体内的语句,然后再次评估 condition 表达式,这个过程会一直重复,直到 condition 表达式的值为假(即零),循环终止,程序接着执行位于 while 循环之后的其他语句。
逆序打印正整数
要实现逆序打印一个正整数,我们可以使用 while 循环结合取余运算符(%)。具体做法是不断取出整数的最低位,然后除以十,舍弃最低位,循环执行直到整数为零。
#include <stdio.h>
int main() {
int number;
scanf("%d", &number); // 输入正整数
while (number) {
printf("%d ", number % 10); // 打印当前最低位
number /= 10; // 去除最低位
}
return 0;
}
15.for 循环后的三个表达式
for 循环的三个表达式分别用于初始化、条件检查和循环迭代。它们的执行顺序是:首先执行初始化表达式,然后执行条件检查表达式,如果为真,则执行循环体,然后执行迭代表达式,更新循环变量。这个过程会一直重复,直到条件检查表达式的值为假。
16.do-while 与 while 的区别
do-while 循环至少执行一次循环体,因为它的条件判断是在循环体执行之后。而 while 循环则可能在一次也不执行循环体的情况下结束,因为它在每次循环开始时就进行条件判断。
// do-while 循环示例
#include <stdio.h>
int main() {
int count = 0;
do {
count++;
} while (count < 5); // 打印从1到5
return 0;
}
// while 循环示例
#include <stdio.h>
int main() {
int count = 0;
while (count < 5) {
count++;
} // 打印从1到5
return 0;
}
17.循环体内执行多个语句
要在循环体内执行多个语句,可以将它们放在同一组花括号内。这样,这些语句将作为一个整体在每次循环时一起执行。
// 示例
#include <stdio.h>
int main() {
while (condition) {
// 多个语句
printf("Statement 1\n");
printf("Statement 2\n");
}
return 0;
}
18.break 与 continue 的区别
break 用于完全跳出所在的最内层循环,并且继续执行后续代码。而 continue 用于结束当前循环,直接进入下一次迭代的条件判断。
19.在 switch 中使用 break 和 continue
在 switch 语句中,break 用于结束整个 switch 结构,而 continue 用于在满足某个条件时跳过当前的 switch 分支,直接进入下一个条件判断。
19.while、for、do-while 使用 break 和 continue 的区别
在使用 break 和 continue 时,while 和 for 循环的跳转行为相同,都是跳出所在的最内层循环。但是,do-while 循环的 break 和 continue 行为与前两者不同,因为 do-while 循环的跳转是基于 do-while 结构本身而非其内部代码块的执行情况。