看看这道题,关于引用的,昨天考试题...

间谍 2003-06-29 02:22:57
首先我得说我们的书上确实有这种写法,昨天的考试题也出这道题了,但我仍然有些怀疑.
写出运行结果:
int a=10;
const int b=90;
float c=11.9;

int& d=a;
int& e=b;
int& f=c;

d+=2; e+=10; f++;

cout<<a<<b<<c;
我的答案是:a=12,b=90,c=11.9
同时我又在卷上标注了:C++标准未定义,视编译器及优化开关情况而定.有的编译器会出现左右值类型不匹配的错误或警告.

我的感觉是有的编译器会把const int b = 10直接看成#define b 10;而e产生的只是一个副本.f的情况也是如此.

请问我这么写对吗?上面int& e=b C++标准中有定义吗?
...全文
86 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
njuhuangmy 2003-06-29
  • 打赏
  • 举报
回复
hehe

强啊

连这个都 发现 了
lbaby 2003-06-29
  • 打赏
  • 举报
回复
楼主的ID居然是中文的
间谍 2003-06-29
  • 打赏
  • 举报
回复
我们考试几乎都是书上的原题或者前两届的题
间谍 2003-06-29
  • 打赏
  • 举报
回复
maojincxj,这道题是书上的例子,只能说书上写错了...,确切的说也许已经不符合C++98(虽然书是99年出的)
maojincxj 2003-06-29
  • 打赏
  • 举报
回复
可能仅仅是为了考点::const和&
老师可能没有仔细推敲

你的答案应该是对的吧
间谍 2003-06-29
  • 打赏
  • 举报
回复
sorry,我不想给自己学校带来不好的影响:),我不是计算机及其相关专业的,也许计算机专业的考试题会好一些吧,谢谢大家回答.
MaiCle 2003-06-29
  • 打赏
  • 举报
回复
间谍() :你是哪个学校的?

cxjddd 2003-06-29
  • 打赏
  • 举报
回复
肯定通不过的。
间谍 2003-06-29
  • 打赏
  • 举报
回复
ntxs(松下酷代子):我只想知道那个用法在C++98中有没有定义:),你说的,现在都TMD这个时代了,还用TC,希望你能直接和我们校长说出这句话,谢谢
间谍 2003-06-29
  • 打赏
  • 举报
回复
to maicle:笔误,是float c[3];:)
wowowowo 2003-06-29
  • 打赏
  • 举报
回复

#include<iostream.h>
void main()
{
int a=10;
const int b=90;
float c=11.9;

int& d=a;
int& e=b;
int& f=c;

d+=2; e+=10; f++;
cout<<"d="<<d<<"\ne="<<e<<"\nf="<<f;
}
用vc编译后
--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
E:\Temp\Cpp1.cpp(6) : warning C4305: 'initializing' : truncation from 'const double' to 'float'
E:\Temp\Cpp1.cpp(9) : error C2440: 'initializing' : cannot convert from 'const int' to 'int &'
A reference that is not to 'const' cannot be bound to a non-lvalue
E:\Temp\Cpp1.cpp(10) : error C2440: 'initializing' : cannot convert from 'float' to 'int &'
A reference that is not to 'const' cannot be bound to a non-lvalue
Error executing cl.exe.

Cpp1.obj - 2 error(s), 1 warning(s)
我认为:
const对象的地址只能赋给指向const对象的指针 所以int& e=b错误
而int& f=c;c是float f声明为int 好像不对
three1103 2003-06-29
  • 打赏
  • 举报
回复
题目不好,i think !
MaiCle 2003-06-29
  • 打赏
  • 举报
回复
struct student{long a,char* b;float c[4]}
这个是18?你怎么算的?呵

间谍 2003-06-29
  • 打赏
  • 举报
回复
类似的还有很多,比如有一题:
struct student{long a,char* b;float c[4]}
问:在近指针模式下,该结构体大小为:我只能先写上18,然后再加一条注释:此题假设在TC环境下,如在VC环境下,则无远近之分.不知道我这么写批卷老师会不会疯掉.
还比如,有一道题居然直接拿float和0做比较,狂FT...
由于考试题年年几乎都一样,导致大家都是20分钟答完卷,而且都是八九十分,我觉得这种考试已经失去意义了,不过没办法:)
goldly 2003-06-29
  • 打赏
  • 举报
回复
你自己编个编译器可以满足你的要求。但有什么意义呢?
MaiCle 2003-06-29
  • 打赏
  • 举报
回复
题目不好,

考试题!汗啊。。。。
间谍 2003-06-29
  • 打赏
  • 举报
回复
一定有编译器能通过(大概是94年以前的吧),不然写书的人不会胡编的:),我想知道我写的"C++标准未定义"有问题吗?还是应该写成"C++标准不允许"?


point_to 2003-06-29
  • 打赏
  • 举报
回复
个人认为题目出的不好!
当然只要自己搞清楚了,而且不在以后的代码里写成这易混淆的就ok了!



http://expert.csdn.net/Expert/topic/1967/1967443.xml?temp=.9209558
meimj 2003-06-29
  • 打赏
  • 举报
回复
int& e=b;//编译不过去,首先b是const,e+=10就会出错,其次int& e=b;应为const int& e=b;
huigll 2003-06-29
  • 打赏
  • 举报
回复
vc6下:
int& e=b ;
error C2440: 'initializing' : cannot convert from 'const int' to 'int &'
int& f=c;
error C2440: 'initializing' : cannot convert from 'float' to 'int &'

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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