C语言的操作符
来源:互联网 发布:郭靖 杨过 知乎 编辑:程序博客网 时间:2024/06/05 04:54
算数操作符
+ - * / %
需要注意的是 1.浮点数的除法,两个数中至少有一个是浮点数
2. %运算的两个数字必须是整数
移位操作符
<< 左移 a<<1 二进制的a左移一位 但是a的值是不变的,移位只是这个表达式的结果
>> 右移 如果想让移位后改变a的值 ,可以 a>>= 1; 移位再赋值
!!!!因为计算机内只有加法器,而除法是通过加法算出来的,左移移位相当于给原来的数字乘2右移相当于除2,所以在条件允许的情况下,可以用移位运算代替除2,这样会提高效率。
位操作符
& 按位与 同真为真
| 按位或 有真为真
^ 异或 两个数字相同为0,不同为1 //一个数字和自己异或是0;和0异或是本身。
赋值操作符
=
有可能出现这样的情况 a = x = y+1; //连续赋值,相当于 x = y +1; a = x; 但是不建议这么写
复合赋值符号
+= -= /= %= >>= <<= &= |= ^=
计算的顺序是 a += 1; 等同与 a = a+1; 其它的类似
单目操作符
! - + & sizeof() -- ++ *
非 负 正 取地址 计算大小 自减 自增 间接访问操作符
单目操作符就是只有一个量参与运算。
注意:
sizeof();这是一个操作符而不是一个函数 ,sizeof()操作符在编译时就已经计算出结果,所以它是一个操作符;而且在sizeof的操作数为一个数或者变量时可以没有(),而时int 这种类型时就必需有括号。
* 间接访问操作符
通常我们定义一个指针时是这么写的 int *p = NULL; 但也可以这么写 int* p; int*是类型,p是指针变量。 p = &a; *p = 20; 这个的意思是根据p的地址找到a赋值为20,所以*叫做间接访问操作符。
强制类型转换
使用说明
int num = 0;
float f = 3.14f;
num = f; //将一个长度大的类型赋值给一个短的时可能会丢失数据,所以要写成 num = (int)f;
关系操作符
> < == >= <= !=
用于比较,判断
逻辑操作符号
&& ||
逻辑与 逻辑或
注意:if(a > b && b<c &&c >d)
{ } //当a>b不成立时这个表达式就不判断后面的了,同理,如果为||时,一个为真后面就不判断了
条件操作符(也叫三目操作符)
exp1 ? exp2 : exp3;
举例: a>5 ? b=3: b=4; //如果a>5,那么b就等于3,否则等于4;
通常这么用 b = a>5 ? 3: 4;
因为,这个表达式的意思是:如果表达式一为真,那么整个表达式的结果就是第二个表达式!!!
逗号表达式
exp1, exp2, exp3,......expn;
逗号表达式是从左往右运算的,但整个表达式的结果是最后一个表达式的结果
下标引用操作符
[ ]
这个符号是有两个操作数的,一个是数组名,一个是下标。
函数调用操作符
()
一个或者多个操作数,函数名+参数个数;
结构成员操作符
. ->
定义一个结构体
struct Stu //struct Stu这两个合起来叫做结构体名,Stu只是个标签
{
char name[20];
int age ;
int height;
}
结构体在创建时不会在内存中开辟空间,而在实例化时才会开辟
int main()
{
struct Stu s; //这里呢我们定义一个结构体变量
s.name = "zhangsan"; //然后再给这个变量的各个属性赋值,但会发现给name赋值时会报错
s.age = 19; 因为name是数组的首地址,而地址是一个值,你不能把一个值赋给
... 另外一个值,所以要用strcpy(s.name,"zhangsan");
return 0;
}
而-> 结构体在传参数时,不传变量,而要传地址
所以在定义函数时,参数我们定义一个Stu *p;
我们就可以这样访问它的属性 p -> age;它的效果相当于 (*p).age;
阅读全文
0 0
- C语言的操作符
- C语言的操作符
- C语言的操作符
- C语言的操作符
- c语言操作符
- C语言#,##操作符
- C语言操作符
- 【C语言】操作符
- 【C语言】操作符
- c语言操作符
- c语言操作符
- C语言操作符
- c语言操作符
- C语言操作符
- c语言操作符
- C语言操作符
- c语言操作符
- c语言操作符
- 了解java .lang 包,java.util包等常用包
- MapperScannerConfigurer[注入映射器]
- i2c
- Solr中的字段类型field type
- rubycritic
- C语言的操作符
- 实现对数组{25,24,12,76,101,96,28} 的排序
- Json学习
- Nw.js开发
- bat批处理命令查看两个进程是否存在
- Java后台框架篇--Spring整合redia自动缓存管理
- 上班要打扮美美的
- 电路板书签
- hdu 1075(字典树)