社区
C++ 语言
帖子详情
int i = i
peeky01
2011-09-25 09:38:40
代码如下:
int var = 1;
int main()
{
int i = i;
cout << i;
system("pause");
return 0;
}
请问:i一定是1吗?还是取决于不同编译器
...全文
223
23
打赏
收藏
int i = i
代码如下: int var = 1; int main() { int i = i; cout << i; system("pause"); return 0; } 请问:i一定是1吗?还是取决于不同编译器
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
alweeq86
2011-09-25
打赏
举报
回复
2147348480
Process returned 0 (0x0) execution time : 0.016 s
Press any key to continue.
柯本
2011-09-25
打赏
举报
回复
to:healer_kx
看过汇编了,bcb进入main时,eax就是1,而i就用了eax
如果中间有其它代码,那就是随机值了
healer_kx
2011-09-25
打赏
举报
回复
[Quote=引用 16 楼 keiy 的回复:]
与编译器有关,我的测试,gcc,vc(2008)都不为1
只有bcb结果是1
[/Quote]
看看汇编做了什么?不会是发现未初始化,就随便找个global的值 assign了吧?哈哈。
柯本
2011-09-25
打赏
举报
回复
与编译器有关,我的测试,gcc,vc(2008)都不为1
只有bcb结果是1
taodm
2011-09-25
打赏
举报
回复
楼主,这类垃圾代码都集中在一本叫《C++ Gotchas》里透彻讲解了。
别浪费生命吧。
peeky01
2011-09-25
打赏
举报
回复
木有写错的好吧。。摩根在线笔试题。。今天刚考的
taodm
2011-09-25
打赏
举报
回复
珍惜生命,远离未初始化变量
飞天御剑流
2011-09-25
打赏
举报
回复
大概是把1误写为i了,然后大家就错当成什么高深莫测的东西了,哈哈。
healer_kx
2011-09-25
打赏
举报
回复
---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Error!
Program: e:\SVN3\KxC\DDe\Debug\DDe.exe
Module: e:\SVN3\KxC\DDe\Debug\DDe.exe
File:
Run-Time Check Failure #3 - The variable 'i' is being used without being initialized.
(Press Retry to debug the application)
---------------------------
中止(A) 重试(R) 忽略(I)
---------------------------
我是出不来1的。
lei_jlu
2011-09-25
打赏
举报
回复
这好像是某个公司的笔试题。
lei_jlu
2011-09-25
打赏
举报
回复
我调试的结果是i的值是不同编译器不同的值,也就是说i所占的内存地址里存放的值是不可预知的。
tlnlove2011
2011-09-25
打赏
举报
回复
对啊 结果为什么是1呢-
peeky01
2011-09-25
打赏
举报
回复
我也不知道,不然不发帖了。。我只想知道大家的编译器上结果是不是也为1,还是这个结果取决于编译器
wangmeng1105
2011-09-25
打赏
举报
回复
为什么会是1呢?求解
peeky01
2011-09-25
打赏
举报
回复
运行很正常。。结果为1,摩根的一道笔试题
healer_kx
2011-09-25
打赏
举报
回复
C# Java肯定就编译错误了。C++估计给个Warning。。。
AndyZhang
2011-09-25
打赏
举报
回复
没意思
淡然一笑
2011-09-25
打赏
举报
回复
这样的代码不会报错?
Jake443403168
2011-09-25
打赏
举报
回复
用没有初始化的变量初始化自己,还是没初始化,里面存的是脏数据
「已注销」
2011-09-25
打赏
举报
回复
没输出,哈哈。缓冲区没满,也没用强制输出 std::endl
VC6.0 Debug -858993460
Release 4218345
这个在C语言标准里面未定义的吧,应该是编译器厂商决定的。
加载更多回复(3)
int
i=1;
int
j;
int
j=i++;(自增自减运算)
int
i=1;
int
j;
int
j=i++; 在这里输出结果 i=2,j=1 因为在这里j没有赋值所以在i++之前,先把i的值给了j,也就是i=1的时候,所以j=1,(没有赋值的数,优选给他赋值)i++,i自加1,i=1,1+1,所以输出i=2。
int
i=...
int
i=0, i=i++ 和i++ 区别
i=i++; System.out .pr
int
(i); 输出1 a=i++在我的理解是这样的,它先给i赋一个临时变量比如a,即a=i=1, 然后运算 i=i++, 在最后运算的时候 i 的值使用的是被赋值的临时变量a的值,并非变量本身 即 先运算在赋值...
int
i = 0 与
int
i(0)的区别
int
i= 0; 这种写法,就是经典的C的写法,初始化i为零
int
i(0); 这个是使用了构造函数写法的初始化,相当于定义一个
int
的对象,其初始化的传给构造函数的值为零。 所以说
int
i= 0; 和
int
i(0);是一码事。 ...
如何理解
int
i=1;i=i++;
i=i++; 1、引入两个概念:局部变量表和操作数栈 栈帧(Stack Frame): 是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的...
int
i=010 与
int
i=10 区别:
前面的一种表示的是按照八进制进行表示的i,后者...
int
i=010;
int
j=020; //一定要弄清楚这一点是为什么? System.out.pr
int
ln(i); //8 System.out.pr
int
ln(j); //16 System.out.pr
int
ln(i|4); //12 System.o
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章