一、科学计数法
C语言中的科学计数法主要用于表示非常大或非常小的浮点数,它遵循以下格式:
1. 'E'或'e'表示指数:
科学计数法中的'E'或'e'用来表示“指数”(Exponent)。例如, 1.23e4 或 1.23E4 表示 1.23 * 10^4 。
2. 指数部分:
指数部分可以是正数或负数,用来表示10的幂。例如, 1.23e-4 表示 1.23 * 10^-4 。
3. 符号:
数字可以是正数或负数,符号用 + 或 - 表示。如果省略符号,默认为正数。
4. 小数点:
科学计数法必须包含小数点,即使小数部分只有一个数字。
5. 数字序列:
小数点前后的数字序列可以包含任意数量的数字。
6. 浮点数类型:
在C语言中,科学计数法通常用于 float 和 double 类型的浮点数。
7. 精度:
float 类型通常提供大约6位有效数字的精度,而 double 类型提供大约15位有效数字的精度。
8. 溢出和下溢:
当指数太大或太小,超出了浮点数类型的表示范围时,会发生溢出(overflow)或下溢(underflow)。
9. 编译器实现:
不同编译器可能对科学计数法的支持略有不同,但都遵循C语言标准。
10. 打印浮点数:
使用 printf 函数打印浮点数时,可以使用 %e 或 %E 格式说明符来以科学计数法的形式打印。
11. 读取浮点数:
使用 scanf 函数读取浮点数时,也可以使用 %e 或 %E 格式说明符来读取科学计数法表示的浮点数。
12. 标准库函数:
C标准库提供了一些函数,如 pow ,可以用来计算科学计数法中的指数部分。
13. 数值稳定性:
在进行浮点数运算时,科学计数法有助于保持数值的稳定性,尤其是在处理非常大或非常小的数时。
14. 代码示例:
#include <stdio.h>
int main() {
double num = 1.23e4;
printf("The number in scientific notation is: %e\n", num);
return 0;
}
这段代码将打印出 1.230000e+4 。
二、if……else换成switch……case
步骤
1. 确定条件变量:找出 if...else 语句中被检查的变量。
2. 列出所有可能的值:确定这个变量的所有可能值。
3. 替换为 switch 语句:将 if...else 替换为 switch 语句,并将条件变量作为 switch 表达式。
4. 添加 case 标签:对于条件变量的每个可能值,添加一个 case 标签。
5. 处理默认情况:如果有必要,添加一个 default 标签来处理未列出的值。
6. 移除冗余的比较:确保 switch 语句中不包含不必要的比较。
示例
假设你有以下 if...else 语句:
你可以将其转换为 switch...case 语句如下:
在这个例子中:
我们将 score 除以10,这样每个分数段(90-100, 80-89, 70-79, 60-69)都会被映射到一个整数(9, 8, 7, 6)。
对于每个整数,我们添加一个 case 标签。
使用 break 语句来防止代码穿透到下一个 case 。
添加一个 default 标签来处理所有未覆盖的情况(例如,分数低于60)。
三、条件运算符
(一)格式:
condition ? expression1 : expression2;
(二)基本用法:
1. 条件赋值: 根据条件为变量赋值。
int a = 10, b = 20;
int max = (a > b) ? a : b; // 如果a大于b,max为a的值,否则为b的值
2. 简化if-else语句: 用三元运算符替代简单的if-else语句。
int x = 5;
int result = (x > 0) ? 1 : -1; // 如果x大于0,result为1,否则为-1
3. 函数返回值: 在函数中根据条件返回不同的值。
int isPositive(int num) {
return (num > 0) ? 1 : 0; // 如果num是正数,返回1,否则返回0
}
4. 嵌套三元运算符: 嵌套使用三元运算符来处理更复杂的条件。
int score = 85;
char grade = (score >= 90) ? 'A' :
(score >= 80) ? 'B' :
(score >= 70) ? 'C' :
(score >= 60) ? 'D' : 'F'; // 根据分数给等级
5. 与其他运算符结合: 将三元运算符与其他运算符结合使用,进行更复杂的计算。
int a = 10, b = 5;
int difference = (a > b) ? (a - b) : (b - a); // 计算a和b的差值
(三)注意事项
可读性:虽然三元运算符可以减少代码量,但如果使用不当,可能会使代码难以阅读和理解。
优先级:三元运算符的优先级较低,因此在复杂的表达式中可能需要使用括号来明确运算顺序。
类型一致性: expression1 和 expression2 必须能够被隐式转换为相同的类型,或者本身就是相同的类型。
总结
C语言中的三元运算符是一种非常有用的工具,它允许开发者在一行代码中完成条件判断和值的选择。尽管它功能强大,但应该谨慎使用,以保持代码的清晰和简洁。