C提供了常有的算术运算符:
+、 —、 *、 /、 %、
除了%操作符,其余操作符既适用于浮点类型,又适用于整数类型。当/操作符的两个操作数都是整数时执行整除运算,其他情况执行浮点数除法。 % 为取模操作符,其两个操作数必须为整数,而返回的值是整除之后的余数。
位操作符有:
+= 、-=、-+、*=、/=、 %=、 <<=、 >>=、 &=、 ^=、 |= (类型) 举例: a+=5 <=> a=a+5
= < <= != 测试不相等 == 测试相等 如果两端的操作数符合操作符指定的关系,表达式结果是1,如果不符合,结果是0 关系操作符的结果是整型值,所以它可以赋值给整型变量 注意,在以后编写程序时一定注意区分 赋值= 和 相等==
&& 逻辑与 (1)&&( 2 ) 如果表达式1是真的,再对表达式2求值; 如果表达式1是假的,对表达式2没必要再求值,整个式子则为假
|| 逻辑或 (1)&&( 2 ) 如果表达式1是真的,不再对表达式2求值; 对表达式1求值,若为真,则不必要求后面的,整个式子结果已经确定
条件操作符接受三个操作数,并且会控制子表达式的求值顺序。 exp1 ? exp2 : exp3 首先算exp1,若它的值为非0值,即为真,那么整个表达式的值为exp2,对exp3不会求值; 但是如果exp1的值为假,那么不对exp2 求值,整个表达式的值为exp3。
exp1,exp2,exp3,、、、expN
这些表达式自左向右逐个进行求值,整个逗号表达式的值就是最后一个表达式的值。
//下标引用[] int main() { int arr[10] = { 0 }; arr[4] = 8;//(arr+4)——(4+arr)——4[arr];[]的两个操作数是arr和4 4[arr] = 6; return 0; }
//函数调用操作符 接受一个或者多个操作数 第一个操作数是函数名 其余的操作数是传给函数的参数
{
return x + y;
}
int main()
{
int a = 10;
int b = 5;
Add(a, b);//Add是函数的地址,&Add也是函数的地址,表示同一个意思,()是函数调用操作符,第一个操作数是Add,还有 a,b
}
//结构体
``#include<string.h>
enum SEX
{
male,
female,
secert,
};//此时还没有开辟空间,只是个类型
struct STU
{
char name[20];
int age;
enum SEX sex;
};
int main()
{
struct STU s1;//现在才开辟空间
struct STU * ps = &s1;
(*ps).age = 20;
ps->age = 20;//ps指向对象的成员
strcpy(ps->name, "张三");
ps->sex = male;//结构体对象 用. 结构体指针 ->
s1.age = 20;
s1.sex = male;
strcpy(s1.name, "张三");//对于字符串的赋值必须用strcmp
printf("%s\n%d\n%d\n", s1.name, s1.age, s1.sex);//张三 20 0
system("pause");
return 0;
}