当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : c++赋值问题
帖子发表于 : 2008-05-02 8:27 

注册: 2008-03-06 9:08
帖子: 16
送出感谢: 0 次
接收感谢: 0 次
原程序:
代码:
hala@hala-desktop:~/test$ gdb 1
GNU gdb 6.6-debian
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) list
1       #include<iostream.h>
2       int main()
3       {
4         int a(8);
5         int &ra=a;
6         cout<<(ra==a)<<endl;
7         cout<<(&ra==&a)<<endl;
8         cout<<(sizeof(ra)==sizeof(a))<<endl;
9         if(ra==a)cout<<"1";
10          else cout<<"0";
(gdb) break 2
Breakpoint 1 at 0x8048706: file 1.cpp, line 2.
(gdb) run
Starting program: /home/hala/test/1

Breakpoint 1, main () at 1.cpp:2
2       int main()
(gdb) step
main () at 1.cpp:4
4         int a(8);
(gdb) print a
$1 = 134514729
(gdb) step
5         int &ra=a;
(gdb) print ra
$2 = (int &) @0xb7fe0800: 1474660693
(gdb) print &a
$3 = (int *) 0xbffc2ecc
(gdb) print &ra
$4 = (int *) 0xb7fe0800
(gdb) step
6         cout<<(ra==a)<<endl;
(gdb) print a
$5 = 8
(gdb) print ra
$6 = (int &) @0xbffc2ecc: 8
(gdb) print &a
$7 = (int *) 0xbffc2ecc
(gdb) print &ra
$8 = (int *) 0xbffc2ecc
(gdb)


我想我有个疑惑:
代码:
main () at 1.cpp:4
4         int a(8);
(gdb) print a
$1 = 134514729
(gdb) step
5         int &ra=a;
(gdb) print ra
$2 = (int &) @0xb7fe0800: 1474660693
(gdb) print &a
$3 = (int *) 0xbffc2ecc
(gdb) print &ra
$4 = (int *) 0xb7fe0800

为什么这里的值不一样
而到后面这里
代码:
(gdb) step
6         cout<<(ra==a)<<endl;
(gdb) print a
$5 = 8
(gdb) print ra
$6 = (int &) @0xbffc2ecc: 8
(gdb) print &a
$7 = (int *) 0xbffc2ecc
(gdb) print &ra
$8 = (int *) 0xbffc2ecc
(gdb)

却一样了


最后由 hhts1987 编辑于 2008-05-02 13:24,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-05-02 13:30 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
1.贴代码请用代码环境

2.你print a的时候a的初始化还没有执行。必须step一次再print a!
代码:
(gdb) step
main () at 1.cpp:4
4         int a(8);
(gdb) print a
$1 = 134514729


_________________


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译