!!!初学菜鸟斗胆进言:C++Builder太烂了!!!
#include <stdio.h>
void main() {
char a,b,c,d;
while (1) {
printf("Input a: ");
scanf("%d",&a);
printf("a=%d\n",a);
printf("Input b: ");
scanf("%d",&b);
printf("a=%d b=%d\n",a,b);
c=a;
d=b;
printf("a=%d b=%d c=%d d=%d\n\n",a,b,c,d);
}
}
/*
在C++ Builder6中,
File|New|Other...
New标签
Console Wizard
得到一个主程序框架,改写源代码为上面的内容,
编译并运行,其中键盘输入序列为:
23回车
45回车
得到如下结果(拷屏):
**********************************************************
Input a: 23
a=23
Input b: 45
a=0 b=45
a=0 b=45 c=0 d=45
Input a:
**********************************************************
在Borland C++ 5.0和C++ Builder 5.0中编译运行效果也是如此。
但在Turbo C 2.0和VC6中编译运行完全正常。
*/
我真的不想承认Borland产品有如此瑕疵。
请有经验的前辈们指点迷津。
问题点数:100、回复次数:104Top
1 楼yangfan369(扬帆远行)回复于 2003-06-04 18:55:41 得分 0
难以置信。Top
2 楼yangfan369(扬帆远行)回复于 2003-06-04 19:07:54 得分 0
你的程序中有死循环while(1),没有出口语句,会不会是这个引起的Top
3 楼sdma(智能天线)回复于 2003-06-04 19:08:47 得分 0
做个标记
待会回来看一下……Top
4 楼sdma(智能天线)回复于 2003-06-04 19:09:42 得分 0
我刚才试了
不管那句循环的事
换成下面的代码问题仍然存在…………
#include <stdio.h>
#include <conio.h>
void main()
{
char a,b;
printf("Input a: ");
scanf("%d",&a);
printf("a=%d\n",a);
printf("Input b: ");
scanf("%d",&b);
printf("b=%d\n",b);
printf("a=%d b=%d",a,b);
getch();
}Top
5 楼x_2k(谁会记得我)回复于 2003-06-04 19:09:58 得分 0
試過了,真的有這回事.在找問題中.Top
6 楼x_2k(谁会记得我)回复于 2003-06-04 19:14:05 得分 0
我用的是bcb6 + win2000Top
7 楼x_2k(谁会记得我)回复于 2003-06-04 19:14:27 得分 0
用了update4了Top
8 楼laiguorong(Win Lai)回复于 2003-06-04 19:15:00 得分 0
前面定义的是字符型
输入又是整型
真是搞不懂你想干嘛!Top
9 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-06-04 19:15:26 得分 0
嗬嗬,我不知道的标题说 自己是菜鸟是谦虚还是对borland c编译器的嘲讽。
但是我可以告诉你这个不是bug,只能说不通编译器的差异。
你不理解了不同编译器的差别。Top
10 楼Behard(我爱天安门)回复于 2003-06-04 19:15:54 得分 0
非常简单的问题呀
你自己的代码有问题呀
char 的变量当作 int 来输入,而 a、b、c、d 的地址是连续的
输入 b 是已经覆盖了 a 的后面三个 Byte 的数值
其当然为零
测试我的说法:
输入 a=11111111 b=22222222
则 a=21 b=-114Top
11 楼x_2k(谁会记得我)回复于 2003-06-04 19:16:55 得分 0
以前好像是听说过这问题的.
原理倒是忘了.Top
12 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-06-04 19:17:13 得分 0
你忽略了 char 和 int的存储方式不同。
我没试过你的程序,但是我想你不妨输入一下 a=256 这个数字,我想肯定是 a=0, b=-1的。Top
13 楼huangjuliang(学习,学习,再学习!)回复于 2003-06-04 19:21:42 得分 0
兄弟看仔细了
字符类型呀出错了!
定义 char
scanf %d
当然不对了
这不是BCB的错呀!!!
是你自己的错!Top
14 楼x_2k(谁会记得我)回复于 2003-06-04 19:22:35 得分 0
哈哈,被楼主糊涂了.学到东西了.谢谢大哥们.
Turbo C++ 2.0不也是BORLAND设计的么,为什么它要改原先的设计?
其实以前学C++时就觉得这样CHAR与INT可以自动换挺方便的.
Top
15 楼wangxd(东东)回复于 2003-06-04 19:22:56 得分 0
是么,试试看Top
16 楼Libran()回复于 2003-06-04 19:26:40 得分 0
由于声明为char类型,编译器为a、b、c、d各分配了一个字节,且连续的存贮空间;而作为int赋值时会占用2个字节,因此将高字节(刚好就是前一个变量的存贮地址)也同时写入值,所以……Top
17 楼slhuang(★Shawn★)回复于 2003-06-04 19:29:32 得分 0
楼上的有道理。第二次学习中……Top
18 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-06-04 19:29:36 得分 0
char a, b, c,d
变成汇编,应该是这么存储的 (32bit方式)
a=> [ebp-1]
b=> [ebp-2]
c=> [ebp-3]
d=> [ebp-4]
当你给 b 按照整型scanf("%d", &b)赋值得时候,
他会把b的内容填写在 [ebp-2][ebp-1][ebp-0][ebp+1] 这4个字节里面,很显然,它覆盖了刚才的a [ebp-1]的内容,
你说的45小于 255,自然 [ebp-1]这几个字节都变成 0了,
其实你的ebp指针操作已经溢出了,可以说你这个程序是存在潜在的危险的。
按照你的说法vc不出错,2种可能,
1.vc的编译器按照了多字节对齐方式,比如4字节对齐
这样可能是按照这么分配的空间。
a=> [ebp-1]
b=> [ebp-5]
c=> [ebp-9]
d=> [ebp-13]
2.vc的编译器在类型转换的时候没有把你的scanf("%d", %a)这些操作扩展为4字节的整数。
总之,问题的根结在于你自己。
推论:你这个问题如果在非x86处理器上,比如powerpc这类的编译器上面,又是另一个结果,因为他们堆的生长方向和x86的正好相反。Top
19 楼x_2k(谁会记得我)回复于 2003-06-04 19:30:25 得分 0
這樣說,就理解了.Top
20 楼x_2k(谁会记得我)回复于 2003-06-04 19:33:12 得分 0
代所有不明白的人感謝樓主與各位星星大哥,這可以書上學不到的寶貴東東.Top
21 楼yingyys(鹰)回复于 2003-06-04 19:39:03 得分 0
是的呵,char 改成 int 就行,原理就是众高手说的Top
22 楼ThinkX(秋天的树)回复于 2003-06-04 19:40:49 得分 0
在help中写的命名白白,%d输入时需要int*的指针,
你却给了char*的指针,当然会溢出的,覆盖掉后面3个字节,就是b,c,d都被清空了。
另外,你这篇帖子口气不小,告诉你,你正是无知者无畏。
你还没有资格先怀疑编译器,出了问题先要怀疑自己是否错了。
最后告诉你,要想知道scanf是怎样实现的,去看
$(bcb)/source/rtl/source/io/scanf.c和scanner.c去吧,
等看明白了你才有资格发这种帖子!Top
23 楼kufuy()回复于 2003-06-04 19:53:44 得分 0
输整型给字符型变量,发生栈溢出。Top
24 楼shanewest1(炉子)回复于 2003-06-04 20:09:31 得分 0
明白了Top
25 楼qibo999(行路者)回复于 2003-06-04 20:16:41 得分 0
呵呵,来看看。
大家说的很不错,看来学习就是要扎扎实实,要理解透彻!Top
26 楼shally5(我在一旁静静的看着你)回复于 2003-06-04 20:36:29 得分 0
呵呵,来啊!掌嘴.Top
27 楼commandos(孤独求胜)回复于 2003-06-04 20:48:36 得分 0
呵呵,tc能够通过是因为tc2.0 是 16位的编译器,
borland c++5和borland c++Builder6 都是32位的Top
28 楼yydy(一条活鱼)回复于 2003-06-04 20:56:40 得分 0
有时间再看Top
29 楼chifengwatch(chifengwatch)回复于 2003-06-04 21:18:18 得分 0
up upTop
30 楼fly_hyp(大鹏)回复于 2003-06-04 21:39:07 得分 0
"由于声明为char类型,编译器为a、b、c、d各分配了一个字节,且连续的存贮空间;"
错了c++ char 应该为两个字节!!!!!
Top
31 楼joymachines(www.chinabcb.com)回复于 2003-06-04 21:40:51 得分 0
嗨,盖了
好像在学汇编Top
32 楼leehq(没有读过高中的人)回复于 2003-06-04 22:05:10 得分 0
[C++Builder6] VS [Visual C++.NET]
[Delphi6] VS [Visual Basic.NET]
的确没得比,界面不够友好,又不能定义自己的喜欢的工具栏布局!hlp格式(难道连chm格式borland都不会做?!)的帮助文件更本就没用,真不知道borland是怎么想的!Top
33 楼actinia(海葵)回复于 2003-06-04 23:08:16 得分 0
关注,做个标记Top
34 楼zywx(Waterun)回复于 2003-06-04 23:57:08 得分 0
to leehq(没有读过高中的人)
不要忘了,[Visual C++.NET]和[Visual Basic.NET]都是在[C++Builder6] 和[Delphi6]之后推出的啊,你拿80年代的dos能和windows相比吗?你说界面不够友好,那你认为什么样的界面才够友好?可能是你的审美观点和一般人不同吧,就像有的人喜欢光着屁股睡觉,而有的人喜欢穿着西服睡觉Top
35 楼rh(花覆茅檐)回复于 2003-06-05 00:03:00 得分 0
真对得起你的名字:)
"无畏的英雄"!Top
36 楼xz_fj(嚣张.net)回复于 2003-06-05 00:25:12 得分 0
我用BCB很久了,出了问题我一般是怀疑自己的代码,BCB是不稳定,也的确有BUG,但基本上你写普通程序是很难碰到的Top
37 楼Behard(我爱天安门)回复于 2003-06-05 00:39:28 得分 0
怎么没有看见楼主出现了呢?Top
38 楼sxqwhxq(步青云)回复于 2003-06-05 12:13:18 得分 0
最近一些QQ在未认真作调查研究和仔细推敲就是动不动用不太礼貌的语句扁BCB,这样影响大家的心情。Top
39 楼cnsuyong(小可)回复于 2003-06-05 13:07:47 得分 0
楼主来说话:
如果把声明改成
char b,a,c,d;
则一切正常。
也就是说,把声明中的a和b换一下位置,就没问题了。
楼上诸位讨论的很激烈,俺很感激。
只是按照所谓“内存覆盖”理论来说,好象是解释不通的,不信大家就试试。
还有,俺一直以为,char与int只是内存宽度不一样,但都可以用来存放整数,特别是char类型,随便写成下面哪一句,都是正确的:
a=65;
b='X';
c='\0';
俺以为,这一点与Delphi中的char完全是两回事(Delphi中的Char类型必须通过Ord运算才能转换为专门的Byte类型)。Top
40 楼nobill(阿宝)回复于 2003-06-05 13:23:22 得分 0
up一下Top
41 楼leonpard(猪哥哥)回复于 2003-06-05 13:25:12 得分 0
这么简单的程序出错,不找自己的问题,楼主对自己太自信了吧。Top
42 楼qlqqlq1978(*^_^*)回复于 2003-06-05 13:28:48 得分 0
pazee(耙子) 说得对,可以解释得通啊,
cnsuyong 你仔细想一下Top
43 楼qlqqlq1978(*^_^*)回复于 2003-06-05 13:31:25 得分 0
楼主精神我很佩服,但你得做法有点不妥
自己问题没找到,先一阵狠骂。
我最后再说一句佩服。Top
44 楼qlqqlq1978(*^_^*)回复于 2003-06-05 13:36:31 得分 0
你想,a,b顺序一变成了b,a
而你先输入a,而那时的b还没分配内存,当然不存在覆盖的问题啊。这是大概思路,很多东西要自己体会。OVERTop
45 楼taigc(taigc)回复于 2003-06-05 13:40:13 得分 0
#include <stdio.h>
void show_value(char* address)
{
int i;
printf("%X : ",address);
for(i=0;i<4;i++)
{
printf("%02X ",*(address+i));
}
printf("\n");
}
int main(void)
{
char a=0,b=0;
scanf("%d",&a);
show_value(&a);
show_value(&b);
scanf("%d",&b);
show_value(&a);
show_value(&b);
return 0;
}
....自己用上面的程式跑跑看.. -_-||
分配時a的位址會在b的後面一byte...
所以a填入後~ 是對的...因為不知道蓋到啥了...
但在b填入後...因為是int...所以同上也是填入4byte...
所以就把a的值蓋掉了...-_-||
請跑跑我寫的程式觀查一下記憶體的值...Top
46 楼cnsuyong(小可)回复于 2003-06-05 13:41:05 得分 0
俺整理了一下,欢迎大家指正:
1、scanf %d不能用于char,因此希望用户输入年龄(不会超过127或者255岁吧)并且保存到char变量中是不可能的,必须以%c让用户输入A(65岁,用户说:我今年A岁了),或者用%s得到"65"然后计算得到数字65再存入到char变量中?
2、BCB没有问题,而TC2和VC6有问题,这么简单的“错误代码”居然能正确运行??
3、char类型就是字符类型,只能作为字符或者串的元素,而不能用来输入数字???
由此引发的问题:
1、VC与BCB编译器有哪些主要差异?
2、与此类问题相似的情况还有多少?
欢迎大家批评,更欢迎大家指教。Top
47 楼cnsuyong(小可)回复于 2003-06-05 13:43:33 得分 0
关于内存的问题,俺明白,谢谢楼上诸位。
俺还想问:为什么98年的VC就能正确处理,而2002年的BCB6却不行呢?Top
48 楼qlqqlq1978(*^_^*)回复于 2003-06-05 13:45:35 得分 0
你说话也不能这么极端啊,你这根本不是虚心接受。
首先声明我也是一菜鸟,也不和你多讲了。
此问题就此结束。88Top
49 楼myy()回复于 2003-06-05 13:46:19 得分 100
C++Builderer 太烂了Top
50 楼cnsuyong(小可)回复于 2003-06-05 13:57:29 得分 0
欢迎继续耐心批评俺,欢迎继续耐心指教。Top
51 楼zywx(Waterun)回复于 2003-06-05 13:57:41 得分 0
我想这不是BCB6不行的问题,而是BCB6根本当这是错误的用法,说明BCB6是按照语法严格执行的,你想一想Turbo C不是也可以吗?Top
52 楼taigc(taigc)回复于 2003-06-05 14:02:14 得分 0
回答cnsuyong:
1. 因為int為4byte, 所以scanf %d會寫入4bytes的資料到你指定的memory address.
2. 這不算錯誤, 這就是用指針出錯. C語言本來就可以隨便將值寫入指定的memory中, 你可以看看C語言教學書中關於指針(point)的部份.
3. char就是一個1byte的資料, 在print %c時, 會根據該byte的值來決定輸出的char, 儲存在memory都是一個值的, 所有char都對應到一個ASCII碼.
歡迎指教與討論^^Top
53 楼cnsuyong(小可)回复于 2003-06-05 14:03:03 得分 0
现在想想,还是Pascal(直到Delphi7的Object Pascal都很强壮)的Read、Readln、Write、Writeln好,哪有这么多的麻烦。可惜俺已经走上了C/C++的不归路。
请大家帮帮再耐心一点吧:如何把数字直接输入到char变量中?(%d真的不能用于char吗?)Top
54 楼TopCat(令狐虫)回复于 2003-06-05 14:33:55 得分 0
这不是BCB的问题,你的用法是一个错误的用法——你说得没错,%d不能用于char,而C标准库(注意是标准库,不管是不是BCB)不保证错误用法的结果正确性。你只测试了TC和VC,你测试过gcc吗?我在gcc和g++里编译,结果跟BCB是一样的,gcc是现在Linux上的主力C语言开发工具,它的结果应该还是值得信任的吧。
解决的方法是,使用1个int变量做临时变量:
char a,b,c,d;
int temp;
scanf("%d", &temp);
a=temp; //这样不会出错,因为编译器会做一个隐式转换。
至于你说的Object Pascal,我倒是很奇怪,难道在Pascal里你能把数字读入一个char类型变量?我手头上没有Pascal编译器,还烦请楼主自己测试一下。Top
55 楼ThinkX(秋天的树)回复于 2003-06-05 15:27:09 得分 0
这和编译器一点关系也没有,而是与运行库有关。
你可以看看运行库是怎样实现的,因为不同的编译器配备有不同的运行库。Top
56 楼sxqwhxq(步青云)回复于 2003-06-05 15:46:14 得分 0
楼主,不知你试过以下最简单的代码没有?
char *p1=”test”;
char *p2=”test”;
if(p1==p2)
ShowMessage(“p1等于p2”);
else
ShowMessage(“p1不等于p2”);
肯定不相等!因为这是C++分配了两个字符串常量,它们的地址是不一样的,但你切不可认为“C++真烂”,否则就连windows的核心也是不可靠的,因为的内核是用C++写的。
Top
57 楼thingking(【深水冒泡 (先把书读厚,再把书读薄,最后把书读厚)】)回复于 2003-06-05 15:54:28 得分 0
无话可说!Top
58 楼yhz(耗子)回复于 2003-06-05 19:20:06 得分 0
“为什么98年的VC就能正确处理,而2002年的BCB6却不行呢?”
这不是年代的问题,而是不同的编译器的不同处理方式的问题。
VC可能在标准C之外,对这个类型的错误进行了优化,
(例如对数据类型进行了隐式转换等等)
所以在编译运行的时候不会出错。
但是BCB则是严格按照标准C的规定,直接编译,就会出错了。
这是和这两个编译器的风格有关,根本不是技术问题,
如果你不能接受BCB的处理方式,没有人会反对你用VC。
其实,C/C++是一种很灵活,很自由的语言,根本不是死板的Pascal所能比的。
但是,自由的缺点就是容易出错,要程序员自己十分的小心每一步。
所以,只要编译器完全支持标准C/C++就可以了。
每个人都有自己的风格和喜好,
而很不幸,BCB的风格是你所不能接受的,那你 完全可以转用VC,
这完全是你个人的选择。
但是不要把这些问题都怪罪到BCB头上,
至少我个人觉得他是一个很好的编译器。
Top
59 楼xiaojianw(钳工)回复于 2003-06-05 19:21:26 得分 0
upTop
60 楼Yans(跟贴是一种友谊)回复于 2003-06-05 19:56:20 得分 0
大家说的很不错,看来学习就是要扎扎实实,要理解透彻!
我用bcb没多久,但觉得有些地方还不错!也遇到过不少毛病!可能是自己水平太差了吧!呵呵!
学习学习Top
61 楼leehq(没有读过高中的人)回复于 2003-06-05 20:12:41 得分 0
---------------------------------------------------------------------------------
to leehq(没有读过高中的人)
不要忘了,[Visual C++.NET]和[Visual Basic.NET]都是在[C++Builder6] 和[Delphi6]之后推出的啊,你拿80年代的dos能和windows相比吗?你说界面不够友好,那你认为什么样的界面才够友好?可能是你的审美观点和一般人不同吧,就像有的人喜欢光着屁股睡觉,而有的人喜欢穿着西服睡觉
---------------------------------------------------------------------------------
to ozywx(Waterun)
Visual Studio.NET可是2002年初推出的啊,而C++Builder6也是2002年出的吧,怎么不能拿来相比呢?
即使是和vc6比它也比不上啊!
Top
62 楼Lewolf(无名)回复于 2003-06-05 22:03:36 得分 0
我的BCB编译没有问题,因为我的IDE缺省设置是4字节对齐,
呵呵,恰好给碰着了!
TC中16位编译器,缺省设置是2字节对齐,对于16位整型,没问题可以和int自由转换,而BCB中安装后的对齐方式好像是字节对齐,微软一直推荐使用4字节对齐,在其VC中想必就是这样,我觉得微软的作风就如同他的产品一样,一味的追求华丽,而不顾及资源的利用,据说在.Net的PE文件中,节的对齐方式已经从4K增加都8K,天那,8K对齐方式,简直就比Dos下的Mouse驱动程序还要大。
BCB给你了自由,只是你没有掌握,当然写出上面的代码也完全是不负责任的做法。Top
63 楼Jinglihui(雪狐)回复于 2003-06-05 22:06:59 得分 0
烂Top
64 楼nnfish(游在Code中的鱼)回复于 2003-06-05 22:15:18 得分 0
^0^,,原来如此Top
65 楼cclx_net(会写程序的猪)回复于 2003-06-05 22:19:58 得分 0
signTop
66 楼warton(创业群13734424 http://www.anywhy.cn)回复于 2003-06-05 22:25:54 得分 0
KKKKKKKK,
是这程序太烂!!哈哈!Top
67 楼lantianning(浮想花园)回复于 2003-06-05 22:39:05 得分 0
实话实说,
除了BCB比较烂
还有大家编的程序也比较烂Top
68 楼xiuligong(臭油松)回复于 2003-06-06 05:02:08 得分 0
我看BCB到未必烂,是程序烂!很多软件都是从BCB里出来的,怎么到你手里就烂的不能用了呢?Top
69 楼TR@SOE()回复于 2003-06-06 06:52:12 得分 0
讨论这样的问题真浪费时间!Top
70 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2003-06-06 08:38:12 得分 0
许多对C没深究的人会犯这种错误,这种错误在编译时是无法发现的,
运行就出莫名其妙,再如:
char c=28;
printf("%d",c); // 串中假设是整型,而后并不是整型
这种“错误”曾在一本计算机杂志上长篇发表过,说发现了C语言的
一个大错误,其实作者是个半瓶醋。 原因是未掌握C的实质。
Top
71 楼qiuafa()回复于 2003-06-06 13:04:25 得分 0
积分+捧场Top
72 楼dxkh(沧海一粟)回复于 2003-06-06 13:32:24 得分 0
char c;
int d;
scanf("%c",&c);
scanf("%d",&d);
Top
73 楼jingrunx(我是菜鸟我怕谁)回复于 2003-06-06 13:33:43 得分 0
有个小偷偷了邻居家里一件衣服,还在其他人面前说这件衣服不合身。
你给Borland公司付钱没有,在这儿乱叫。
Top
74 楼microlazy(有点懒)回复于 2003-06-06 15:30:58 得分 0
想起来别人说过的一句话
很少高手讨论编译器的高低.Top
75 楼creativitysoft(其实BORLAND是最好的)回复于 2003-06-06 17:34:05 得分 0
真的是狗追摩托不懂科学。还说C++Builder太烂了!支持BCB支持BCB支持BCB支持BCB支持BCB支持BCB支持BCB支持BCB支持BCB支持BCB支持BCB支持BCB支持BCB支持BCB支持BCB!Top
76 楼xhusa(立风)回复于 2003-06-06 18:14:53 得分 0
不要动不动就说XX的编译器不行
要找原因
Tc也是borland的呀Top
77 楼cnsuyong(小可)回复于 2003-06-06 18:41:48 得分 0
哈哈,这么多人维护宝蓝公司啊。
问题也算搞清楚了。不说狠话也得不到这么多的跟贴。一些问题俺问了,不过很少有人搭理,这次算是达到效果了。
我将在VC版中发一篇帖子说“!!!VC太烂了跟BCB没法比!!!”
欢迎诸位继续捧场。
一句老话:我是菜鸟我怕谁!Top
78 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-06-06 18:46:26 得分 0
大家不是追捧 borland,
这是就事论事,哗众取宠不能因为是“菜鸟”就不让人厌恶!Top
79 楼zhzc3911(流星雨)回复于 2003-06-06 18:49:08 得分 0
大家要就事論事,多討論技術問題,多學習
不要說廢話Top
80 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-06-06 18:49:40 得分 0
我上学的时候不像现在互联网满世界都是,只有个别老师的办公室才有条件上网。
tcp/ip只不过是我们网络课上面的一个名词,
我们别老问别人,多问问自己。
你这个问题你完全可以通过看汇编出来的代码来了解。Top
81 楼lanren_me(阿波)回复于 2003-06-06 19:00:12 得分 0
upTop
82 楼cnsuyong(小可)回复于 2003-06-06 19:18:03 得分 0
欢迎到VC版继续讨论俺的菜鸟帖子。这里的问题谢谢诸位!!!Top
83 楼catface0511()回复于 2003-06-06 20:01:01 得分 0
又变成BCB的拥护了
我们学习的是语言不是编译器
如果老是怀着这种谁谁烂的跟什么什么没的比
…………
恐怕难以进步Top
84 楼BlueStorm(蓝色风暴)回复于 2003-06-06 20:11:56 得分 0
菜鸟:
如果你想用C++语言写控制台程序的话,你最好还是把printf()和scanf()忘了吧。
#include <conio.h>
#include <iostream.h>
int main(int argc, char* argv[])
{
int a,b,c,d;
cout<<"Input a: "; cin>>a;
cout<<"a="<<a<<endl;
cout<<"Input b: "; cin>>b;
cout<<"a="<<a<<" b="<<b<<endl;
c=a; d=b;
cout<<"a="<<a<<" b="<<b<<" c="<<c<<" d="<<d<<endl;
getch();
return 0;
}
Top
85 楼cnsuyong(小可)回复于 2003-06-07 00:27:00 得分 0
谢谢楼上。俺在学走路之前,以为学会爬比较重要。尽管是菜鸟,但现在还没能力学飞。
顺便问大家一句:“菜鸟”一词从何而来?(词源)(不好意思,对这个问题,俺也很菜。)Top
86 楼TR@SOE()回复于 2003-06-07 07:00:00 得分 0
如果你的目的是让大家记住你的名字,那么你的目的已经达到了——至少对我来说是如此。我是不会再回答这样的问题的了。Top
87 楼gdyt007(只因专注)回复于 2003-06-07 17:17:00 得分 0
………………Top
88 楼flyinger(风往北吹)回复于 2003-06-07 17:42:49 得分 0
好!
我不知道该说什么!
但我不能沉默!Top
89 楼nightfallrove(过儿 明月装饰了你的窗 你装饰了我的梦)回复于 2003-06-07 18:11:15 得分 0
你丢脸了,快结贴改名吧,,
Top
90 楼BlueStorm(蓝色风暴)回复于 2003-06-07 21:02:12 得分 0
一只菜鸟鸣翠柳,几行高手站两边----好诗!Top
91 楼zxjrainbow(小笨象)回复于 2003-06-07 21:50:48 得分 0
KK!
这不关编译器的事,关你的事!
Top
92 楼yangfan369(扬帆远行)回复于 2003-06-07 23:15:59 得分 0
我们热心的回答他的问题,原来他是醉翁之意不在酒,哎……
不过话说回来,我也算长见识了,一些细节性的问题,我们真得很菜。Top
93 楼cnsuyong(小可)回复于 2003-06-08 00:29:27 得分 0
接受批评中...Top
94 楼cnsuyong(小可)回复于 2003-06-08 10:19:25 得分 0
今天就结贴,还没抛砖的请抓紧时间!Top
95 楼bluedodo(笑三少)回复于 2003-06-08 11:38:19 得分 0
值得好好体会!Top
96 楼kuangjingbo(正在学习windows)回复于 2003-06-08 11:42:34 得分 0
菜鸟?Top
97 楼clinton81(克林顿)回复于 2003-06-08 11:59:54 得分 0
虽然人家不对,但也不要再为难人家了。他已经开始反思自己,以后有困难大家一起解决。Top
98 楼ouyongke(只吃源代码的Mouse)回复于 2003-06-08 12:55:35 得分 0
学到东东了,char 就是int,那么我就可以用int来记录String了。Top
99 楼ql_mf(ql_mf)回复于 2003-06-08 13:06:30 得分 0
从楼顶看到楼底,累死了。
无聊的问题。
We are programmers,请不要讨论这些无聊的问题。
高手无论用什么编程语言都能做得很好,我们要努力成为高手,而不是在这里钻牛角尖。Top
100 楼matq2008(叶子.net)回复于 2003-06-08 13:07:32 得分 0
回答不回答是人家的权利!建议不要太激动!
自己多多学习吧!Top
101 楼cool222(坚持到底)回复于 2003-06-08 13:25:28 得分 0
早该结帐了,惹来这些多废话Top
102 楼shadowstar(CodeFast for Delphi & C++Builder)回复于 2003-06-08 13:49:01 得分 0
对楼主之敬仰如滔滔之江水连绵不绝,又犹如黄河泛滥一发不可收拾也~~Top
103 楼gegangqiao(困惑的男人)回复于 2003-06-08 14:31:17 得分 0
楼上的都是高手,相当不错,佩服!!!Top
104 楼5411208(口子)回复于 2003-06-08 16:27:41 得分 0
其实等我发帖时相信大家已经明白是怎么回事了,我想说的是
既然我们选择了C++就应该尽量避免使用printf,scanf之类的
函数,而是使用COUT,CIN。否则我们干脆使用TC或BC算了。Top



