操作符2
关系操作符
> :
>= :
< :
<= :
!= : 用于测试“不相等”
== : 用于测试“相等”
逻辑操作符
&& : 逻辑与
int main()
{
int a = 3;
int b = 4;
int c = a && b; //当a为真(不等于0),b也为真时,c为真(等于1)。
printf("%d\n", c); //输出1
return 0;
}
|| : 逻辑或
条件操作符(三目操作符)
exp1 ? exp2 : exp3
exp1 成立, exp2 成立, exp3 不成立,整个表达式的结果是 exp2 的结果;
exp1 成立, exp3 成立, exp2 不成立,整个表达式的结果是 exp3 的结果。
int main()
{
int a = 3;
int b = 4;
int max = 0;
if (a > b)
max = a;
else
max = b;
max = a > b ? a : b; //该行代码与上面ifelse语句效果相同。
return 0;
}
逗号表达式
exp1, exp2, exp3, …expN
逗号隔开的一串表达式。
int main()
{
int a = 3;
int b = 4;
int c = 0;
int d = (a = b + 1, b = c - 2, c = a + b);
printf("%d\n", d)
//逗号表达式从左到右依次运算
//结果为最后一个表达式的结果
return 0;
}
下标引用、函数调用和结构成员
[] :数组访问元素时的下标引用操作符
() :函数调用操作符,函数名后面的()
.
->
int main()
{
arr{0, 1, 2, 3, 4,}
arr[0]; //[]数组访问操作符
printf("%d\n", arr[0]); //()函数调用操作符
return 0;
}
常见关键字
auto、extern、register等
auto:自动的,每个局部变量都是auto修饰的。
例:
int main()
{
auto int a = 10; //自动创建,自动销毁的 - 自动变量
//一般省略auto
return 0;
}
extern:用于申明外部符号
register:建议,寄存器关键字
- 计算机中数据可以存储到:寄存器、高速缓存、内存、硬盘、网盘
造价、造价从左往右递减,大小递增。 - 大量且频繁被使用的数据放到寄存器中。
signed:有符号的(unsigned:无符号的)(正负号)
static:静态的
union:联合体
void:空
define、include等不是关键字,为预处理指令
typedef
例:
int main()
{
typedef unsigned int u_int; //重定义unsigned int为u_int(取个别名)
return 0;
}
static - 静态的
- 修饰局部变量
- 修饰全局变量
- 修饰函数
void test()
{
int a = 1; //局部变量的生命周期仅为函数内,函数结束被销毁
a++;
printf("%d", a); //此处结果为10个2
static int b = 1; //static修饰局部变量,函数结束局部变量不销毁,生命周期变长。本质为改变了变量的存储类型。
b++;
printf("%d", b); //此处结果为2-11
}
int main()
{
int i = 0;
while (1<10)
{
test();
i++;
}
return 0;
}
存储结构
从上到下:
栈区:局部变量;函数的参数
堆区:动态内存的分配
静态区:全局变量;static修饰的局部变量;静态变量