c语言运算符6,C语言6 运算符和表达式 | CN-SEC 中文网

摘要

表达式不论怎么复杂。最终只有一个结果不同类型运算结果类型证明的例子:对应汇编片段:

运算符与表达式

什么是运算符?什么是表达式?

int x,y; x+y x-y x>y x==y x=y

表达式的结果

(x+y)*(x-y) char => short => int => float => double /*如果x和 y类型 不同,最终结果按照上面结果类型转换*/

表达式不论怎么复杂。最终只有一个结果

不同类型运算结果类型证明的例子:

void main() { char x =1; short y = 2; int z = x + y; return }

对应汇编片段:

mov byte ptr [ebp-4],1 mov word ptr [ebp-8],offset main+20h(00401030) movsx eax,byte ptr [ebp-4] movsx ecx,word ptr [ebp-8] add eax,ecx mov dword ptr [ebp-0Ch],eax

运算符

算术运算符

+ - * / % ++ -- 加 减 乘 除 取余 自加 自减 int i = 1;

++i 和 i++

/*i++和++i的区别 i++ 先运算再自加 ++i 先自加再运算*/ ++i; mov eax,dword ptr [ebp-4] add eax,1 mov dword ptr [ebp-4],eax i++; mov eax,dword ptr [ebp-4] add eax,1 mov dword ptr [ebp-4],eax 这俩其实是一样的!!但是为啥有这个 前后的区别呢? 往下看~~~ printf("%d /n",i++); mov eax,dword ptr [ebp-4] mov dword ptr [ebp-8],eax mov ecx,dword ptr[ebp-8] push ecx push offset string "%d /n" (0042201c) mov edx,dword ptr [ebp-4] add edx,1 mov dword ptr [ebp-4],edx call printf(00401070) 所以i++ 就是先压入 i的值之后,才会 +1 也就是先让函数使用i运算后,才会+1 反之亦然 ++i 则是先+1 再运算

关系运算符

< <= > >= == != 关系运算符的值只能是0或1 关系运算符的值为真时,结果值都为1 关系运算符的值为假时,结果值都为0

逻辑运算符

! %% || x>y && xy || x

位运算符

<< >> ~ | ^ & 左移 右移 非 或 异或 与

赋值运算符:

= 拓展赋值

条件运算符

?:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值