社区
C语言
帖子详情
i++和++i
guilingjia
2011-09-19 09:40:48
代码输出结果?
#define product(x) (x)*(x)
int main()
{
int i=3,j,k;
j=product(i++);
k=product(++i);
printf(j=%d,k=%d",j,k);
return 0;
}
他的答案是9,49,可是我感觉第二个应该是25
...全文
79
11
打赏
收藏
i++和++i
代码输出结果? #define product(x) (x)*(x) int main() { int i=3,j,k; j=product(i++); k=product(++i); printf(j=%d,k=%d",j,k); return 0; } 他的答案是9,49,可是我感觉第二个应该是25
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
「已注销」
2011-09-19
打赏
举报
回复
这是宏的“侧效”,应该尽量避免出现。
guilingjia
2011-09-19
打赏
举报
回复
懂了,感谢大家了。。。
绿野耕夫
2011-09-19
打赏
举报
回复
楼主奉劝你一句,如果遇到有人拿这个题来面试你,那你可以直接走人了。因为,如果敢在项目里用这样代码的,结局早外被扫地出门。退一步讲,如果这样的代码能在一个公司生存下去,那你在这个公司待下去也必然写不出来优秀的代码。
就程序来说,宏是要展开的,展开结果是:
j = (i++) * (i++);
k = (++i) * (++i);
i++是先用后加,++i是先加后用,因此上面两句相当于:
j = i * i; // 先用
i = i + 1;
i = i + 1; // 后加
i = i + 1; // 先加
i = i + 1;
k = i * i; // 后用
hancker
2011-09-19
打赏
举报
回复
25,应该不可能是。。有可能是30或49
前面那条语句执行完后,I值已经是5了。
后面的,不可能是25吧?
你最好对比汇编指令看看。。
clannadgirl
2011-09-19
打赏
举报
回复
i++*i++; 3*3=9,i=5;
++i*++i; i=7; 7*7=49
cocoabird
2011-09-19
打赏
举报
回复
i自加4次 49是对的
Michael_g
2011-09-19
打赏
举报
回复
宏的参数,不像函数的参数要求值,宏参数会原样代入到宏体中。
小驴
2011-09-19
打赏
举报
回复
j=product(i++); // i=5
k=product(++i); // i=7
Michael_g
2011-09-19
打赏
举报
回复
是49 没错,product 是宏,宏要展开的,你把product原地展开在看看。
guilingjia
2011-09-19
打赏
举报
回复
[Quote=引用 1 楼 michael_g 的回复:]
他的答案是谁的答案?
[/Quote]
《程序员面试宝典》书上的
Michael_g
2011-09-19
打赏
举报
回复
他的答案是谁的答案?
基于Web的酒店客房管理系统的设计与实现+论文+开题
博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 基于Web的酒店客房管理系统的设计与实现 系统说明 3.2.1 用户模块功能分析 前台模块应主要...
基于云原生架构构建亿级多语言电商平台设计到落地实现(开发+测试+部署)
Maven Jenkins CI/CD 持续集成 持续交付 Git Docker Kubertenes 分布式系统微服务注册中心与配置中心:Nacos 分布式系统微服务流量防卫兵:Sentinel 分布式系统微服务网关:Gateway 分布式系统微服务...
k8s全栈技术讲解+企业案例演示[带你快速掌握和使用k8s]【进阶版】
系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等.
Prometheus+Grafana搭建全方位的监控告警系统
系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲
I2C通信详解-1.12.ARM裸机第十二部分
本期课程主要讲解I2C通信协议的基本概念和编程分析。首先简单介绍I2C通信的基本特征,然后详细讲解了I2C通信的时序图,并且通过I2C的时序图讲解了通信物理层的时序概念。之后介绍了S5PV210的I2C控制器、gsensor芯片...
C语言
69,369
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章