?:运算符

myullian 2008-03-25 04:07:41
int a = 0;
int b;
cout<<"a="<<a<<" ";
b = a ? printf("条件一") : printf("条件二");
cout<<"b="<<b<<" ";

开发环境vc++6.0,输出:条件二a=0 b=6
这个“a=0”怎么跑到“条件二”后面了?
...全文
94 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
myullian 2008-03-25
  • 打赏
  • 举报
回复
从C++ programming language上看到:
ios::sync_with_stdio();
可以保证C风格的和C++风格的I/O操作共享缓冲区
myullian 2008-03-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 taodm 的回复:]
不要混用cin/cout与printf/scanf!!!
[/Quote]
这个说的对
我是偷懒写成这个的,就想验证?:的问题,没想到碰到另外一个问题
babyvox1999 2008-03-25
  • 打赏
  • 举报
回复

int main()
{
int a = 0;
int b;
(b = a)?printf("条件一"):printf("条件二");
return 0;
}

还是输出条件二。。。。
qiucp 2008-03-25
  • 打赏
  • 举报
回复
不懂,可能是和编译器有关吧......
wonder2007 2008-03-25
  • 打赏
  • 举报
回复
cout结尾要加endl就可以了

的确不知道怎么解释 感觉endl和\n都是习惯加上去的
tjj5203 2008-03-25
  • 打赏
  • 举报
回复
DEVCPP试过了,先输出a=0的!!!
babyofbaby 2008-03-25
  • 打赏
  • 举报
回复
我在VC6++6.0下运行了。输出正常阿:a=0条件二b=6
jieao111 2008-03-25
  • 打赏
  • 举报
回复
不可能,,我 用试过了,,你在重建一个工程试试
taodm 2008-03-25
  • 打赏
  • 举报
回复
不要混用cin/cout与printf/scanf!!!
ttkk_2007 2008-03-25
  • 打赏
  • 举报
回复
扔了vc6.0
vs2005没问题
sheenl 2008-03-25
  • 打赏
  • 举报
回复
为什么要混用cout和printf? 它们两个有不同的缓冲区的.
改成

cout <<"a=" <<a <<" "<<endl;
试试看
myullian 2008-03-25
  • 打赏
  • 举报
回复
是不是输出流的原因?如果在cout<<"a="<<a<<" ";后面加上endl刷新缓冲区的话就不会这样了
但是我不知道怎么解释
babyvox1999 2008-03-25
  • 打赏
  • 举报
回复
奇怪不懂,帮顶
myullian 2008-03-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 paidfighting 的回复:]
看错了。。。但是我的不会啊
[/Quote]
你的输出不是这样?开发环境vc++6.0?
paidfighting 2008-03-25
  • 打赏
  • 举报
回复
看错了。。。但是我的不会啊
paidfighting 2008-03-25
  • 打赏
  • 举报
回复
b == a

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧