int i ; long(i)与(long)i的区别

luda123 2005-08-11 10:08:51
int i ;
long(i)与(long)i的区别
...全文
410 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
luda123 2005-08-12
  • 打赏
  • 举报
回复
它们的作用是,对i的那片内存空间重新解释,把他解释成long类型;
------------------------------
是不是以后如果没有类型转换,就按long类型解释
herman~~ 2005-08-12
  • 打赏
  • 举报
回复
学习
liao2001 2005-08-12
  • 打赏
  • 举报
回复
我来把楼主搞糊涂一下先:
1.从c规则的角度来说,long(i)是错误的,(long)i是正确的.
2.从c++规则的角度来说,2者都是对的,且结果一样,long(i)可以简单的理解为强制转化,(long)i就是强制类型转化.
3.从c++编译器的角度来说,估计2者极可能完全一样的解释规则
4.从面向对象的角度来说,i其实就是一个对象,long(i)是调用long::long(int i)构造一个long对象,而(long)i,还是强制类型转化,二者是不一样的(结果还是一样-_-#).
5.由3推断,他们的机器指令一样,都是间接利用了寄存器来传值,不存在临时变量.(我个人不把寄存器看作临时变量)
6.由4推断,他们的机器指令有可能不一样,long(i)会有临时变量产生,然后再利用寄存器传值,而(long)i似乎就象厕所里的石头.

作为一个想深入面向对象,而又没有机会的人,我对楼主的建议是,不管对错,尽量用4来分析问题,将对象植入大脑或许会很有意义
lgq2369 2005-08-12
  • 打赏
  • 举报
回复
应该是每个强制类型转化都生成一个转换后的类型的临时变量拷贝。
而原变量在任何时候都是原来的类型不变。
lgq2369 2005-08-12
  • 打赏
  • 举报
回复
强制类型转换都是在编译期间自动完成的,而不是在运行期(除了dynamic_cast)。
具体怎么实现应该看各编译器,无需程序员介入。
snowbirdfly 2005-08-11
  • 打赏
  • 举报
回复
我支持上面的说法,
应该两者是一样的~
都是强制类型转换。
visual4825 2005-08-11
  • 打赏
  • 举报
回复
T(i) 也称函数记法,

对于built-in类型,T(i)和(T)i是等价的

第一种情况主要用于:1.user-defined type的对象构造 2.整数到枚举的转换 3.算术转换

Dong 2005-08-11
  • 打赏
  • 举报
回复
long(i)是产生一个long类型的临时变量,还是改变i 的类型(即扩展 i的存储空间至long类型的大小
------------------------------------
应该说这两者都产生临时变量!!其实“扩展”是临时变量的产生,他不是直接把i地址做为long(i)或者(long)i的低位存在的!
lyclowlevel 2005-08-11
  • 打赏
  • 举报
回复
To:long(i)是产生一个long类型的临时变量,还是改变i 的类型(即扩展 i的存储空间至long类型的大小

ANSWER:没有改变大小,也没有产生临时变量;两者都是强制类型转换,它们的作用是,对i的那片内存空间重新解释,把他解释成long类型;

还有,这两种办法都是旧的类型转换,在c++中的类型转换是:
static_cast<long>(i),reterpret_cast<long>(i).还有其余两种,但不适合i,它们是:
dynamic_cast<类型名>(变量名),const_cast<类型名>(变量名);
不需要包含任何头文件。
luda123 2005-08-11
  • 打赏
  • 举报
回复
long(i)是产生一个long类型的临时变量,还是改变i 的类型(即扩展 i的存储空间至long类型的大小
afx_swallow 2005-08-11
  • 打赏
  • 举报
回复
both of them have the same meaning!
llf_hust 2005-08-11
  • 打赏
  • 举报
回复
没有区别,都是一样的意思
foochow 2005-08-11
  • 打赏
  • 举报
回复
都一样
long(i) ...c++
(long)i....c

64,654

社区成员

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

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