| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 825 人关注过本帖
标题:一个简单的问题,貌似挺有趣,求解
只看楼主 加入收藏
耀耀爱学习
Rank: 2
等 级:论坛游民
帖 子:6
专家分:14
注 册:2012-5-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
一个简单的问题,貌似挺有趣,求解
#include<stdio.h>
int main()
{
    int k=11;
    k=1/3*k++;
    printf("%d\n",k);
    return 0;
}
输出的结果是1
但为什么改为
#include<stdio.h>
int main()
{
    int k=11;
    printf("%d\n",1/3*k++);
    return 0;
}
结果却是0呢
我是新手,求助
搜索更多相关主题的帖子: return 
2012-06-27 09:13
全世界安静
Rank: 2
等 级:论坛游民
帖 子:104
专家分:65
注 册:2012-6-4
收藏
得分:3 
k=1/3*k++;//1/3=0,0*k=0,表达式值为0,k=0,然后k自增,k=1
printf("%d\n",k);//输出1


printf("%d\n",1/3*k++);1/3=0,0*k=0.表达式值为0,输出0
2012-06-27 09:44
震中地带
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:171
专家分:359
注 册:2012-3-26
收藏
得分:3 
首先牵扯到运算符优先级问题,k++意思是先参与表达式运算,再自加1,其次就是表达式问题了
 k=1/3*k++;
    printf("%d\n",k);
这里的k参与的是k=1/3*k的表达式这里k=0;然后k自加1;结果输出的是k,所以输出为1
  printf("%d\n",1/3*k++);这里跟上面的区别在printf输出的是表达式1/3*k的值而不是k的值
2012-06-27 10:16
耀耀爱学习
Rank: 2
等 级:论坛游民
帖 子:6
专家分:14
注 册:2012-5-21
收藏
得分:0 
回复 3楼 震中地带
不是++运算符的运算等级优先吗??
怎么会是k=0后在自增的
2012-06-28 00:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
好好看看书本上关于++前缀、后缀的用法!

授人以渔,不授人以鱼。
2012-06-28 00:43
震中地带
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:171
专家分:359
注 册:2012-3-26
收藏
得分:3 
回复 4楼 耀耀爱学习
就是因为自加运算符优先级高,所以K++告诉编译器先将k参与表达式运算后再自加好好看看自加自减运算符吧。
2012-06-28 05:49
qq383264679
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:155
专家分:130
注 册:2012-1-19
收藏
得分:1 
好多人都死在++  前和++后上
2012-06-28 08:44
震中地带
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:171
专家分:359
注 册:2012-3-26
收藏
得分:2 
回复 7楼 qq383264679
其实仔细花个半小时全身心去投入,完全可以搞定它
2012-06-28 09:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
以下是引用耀耀爱学习在2012-6-28 00:19:58的发言:

不是++运算符的运算等级优先吗??
怎么会是k=0后在自增的

++k,保证+1操作在求取k值之前执行,k++,保证+1操作在下一行执行(注意:是在程序代码的下一行,不是在同一行)。

授人以渔,不授人以鱼。
2012-06-28 12:46
耀耀爱学习
Rank: 2
等 级:论坛游民
帖 子:6
专家分:14
注 册:2012-5-21
收藏
得分:0 
回复 9楼 TonyDeng
懂啦,谢谢了各位
之前一直以为k=1/3*k++,+ +是在使用了k之后在赋值给左边之前k之前运行了,也就是这条赋值语句中的++可以省略,原来错了
谢谢各位大神
2012-06-28 20:54
快速回复:一个简单的问题,貌似挺有趣,求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016718 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved