1.逗号表达式
逗号用来连接两个表达式,并以右边的表达式的值为结果,逗号在所有运算符中先级最低。
int n = (1+2, 2*3,4-5); // n = -1 取右边最后一个结果
int n = 1+2,2*3,4-5; // n = 1+2 即 n = 3
2. && 和 ||
短路与&&:左边表达式是false,右边就不执行,逻辑表达式值为false。
短路或 ||:左边表达式是true,右边就不执行,逻辑表达式为true。
3. 数组指针
int arr [5];
int (*p) = arr;
//那么 *(p+1) 与arr[1]与p[1] 三者输出结果等价
4. 结构体部分初始化
struct test
{
int x;
int y;
int z;
};
struct test p = {.x=1,.z=2};
5. 数据类型
char类型 的本质是 int
int n = 97;
printf("%c",n); //输出结果为a
char n = 'a';
printf("%d",n); //输出结果为97
类型 | 数字范围 | 有效位 |
---|---|---|
float | -3.4E+38~3.4E+38 | 6~7 |
double | -1.7E-308~1.7E+308 | 15~16 |
long double | -1.2E-4932~1.2E+4932 | 18~19 |
float a = 9.3;
float b = 5;
float c = a- b;
if(c == 4.3)
printf("true");
else
printf("false");
输出结果为flase,c并不等于4.3
if(fabs(c-4.3) < 0.000001)
则是输出真
6. 数据类型转换
- 自动类型转换
当运算符左右两边操作数的类型不一致时,会自动转换成较大类型。
整型:char→short→int→long→long long
浮点型:int→float→double→long double - 当把一个较大的类型转换成较小的类型,需要强制转换。
float a = 3.14
int b = 0;
b = (int)a;