C语言操作符++和--怎么使用
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容介绍了"C语言操作符++和--怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、++
千家信息网最后更新 2025年01月20日C语言操作符++和--怎么使用
本篇内容介绍了"C语言操作符++和--怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一、++与--操作符的本质
++ 和 -- 操作符对应两条汇编指令
前置
变量自增(减)1
取变量值
后置
取变量值
变量自增(减)1
下面看一段神奇的代码:
#includeint main(){ int i = 0; int r = 0; r = (i++) + (i++) + (i++); printf("i = %d\n", i); printf("r = %d\n", r); r = (++i) + (++i) + (++i); printf("i = %d\n", i); printf("r = %d\n", r); return 0;}
在 VS2012中,它的运行结果如下:
在 gcc 编译器中,它的运行结果如下:
这是由于不同编译器对 ++ 和 -- 的相对哦执行次序不一样。
二、++与-- 操作符使用分析
C 语言中只规定了 ++ 和 -- 对应指令的相对执行次序
++ 和 -- 对应的汇编指令不一定连续运行
在混合运算中,++ 和 -- 的汇编指令可能被打断执行
++ 和 -- 参与混合运算结果是不确定的。
笔试面试中的"奇葩"题
贪心法:++,-- 表达式的阅读技巧
编译器处理的每个符号应该尽可能多的包含字符
编译器以从左向右的顺序一个一个尽可能多的读入字符
当读入的字符不可能和已读入的字符组成合法符号为止
下面看一段代码:
#includeint main(){ int i = 0; int j = ++i+++i+++i; int a = 1; int b = 4; int c = a+++b; int* p = &a; b = b/ *p; printf("i = %d\n", i); printf("j = %d\n", j); printf("a = %d\n", a); printf("b = %d\n", b); printf("c = %d\n", c); return 0;}
运行后编译器会报错:
这行代码为什么报错呢?int j = ++i+++i+++i;
原因就是编译器发现 ++i 后由于贪心,会继续往下找,发现 ++i+ 后编译器觉得符合语法规则,继续往下找,当出现 ++i++时编译器感觉不对,开始计算,就变成 1++,这是不合法的,所以编译器就会报错。
空格可以作为C语言中一个完整符号的休止符编译器读入空格后立即对之前读入的符号进行处理。
所以下面这么写就可以:
#includeint main(){ int i = 0; int j = ++i + ++i + ++i; int a = 1; int b = 4; int c = a++ + b; int* p = &a; b = b/ *p; printf("i = %d\n", i); printf("j = %d\n", j); printf("a = %d\n", a); printf("b = %d\n", b); printf("c = %d\n", c); return 0;}
编译结果如下:
"C语言操作符++和--怎么使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
编译
编译器
操作符
语言
字符
指令
符号
结果
运行
代码
内容
变量
尽可能
更多
次序
知识
空格
这是
量值
会报
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
海南服务器机柜生产商
巩义无线网络技术
用友互联网科技有限公司
吉林语音网络技术标准
四方厂站网络安全监测
蜜汁炖鱿鱼网络安全什么鬼
网络安全团日相关图片
数据库备份有哪些
梦幻西游慈光阁是哪个服务器
mysql数据库自学
r语言中提取桌面数据库
数据库 元组关系演算
服务器怎么装数据库了
云堤服务器
汉滨区互联网科技发展有限公司
数据库系统操作题
网络安全设备哪种好
报纸系统 数据库实验
网络技术三级很容易吗
陕西省省网络技术学院
网络安全检测风险评估等活动
数据统计后分页适合用什么数据库
数据库描述分组报文
深蓝网络安全组低调路过此站
没有震地者服务器
列族数据库英文
数据库图片加载不出来
笔记本电脑装数据库写代码
公安y数据库
曲靖市网络安全形势通报会