C语言的类型转换是什么时候发生?

csoma 2012-09-02 10:39:39
编译的时候?
执行的时候?
...全文
543 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenke311 2012-09-04
  • 打赏
  • 举报
回复
应该是编译的时候
xspace_time 2012-09-03
  • 打赏
  • 举报
回复
确定是否存在类型转换时在你写程序的时候 能不能转换是在编译的时候 具体执行是在各种类型存取指令(即转换)或者调用相应转换指令(如调用转换函数)的时候 转换完成是在指令或者函数指令成功或者失败的时候
赵4老师 2012-09-03
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

这辈子不看内存地址和内存值;只画链表、指针示意图,画堆栈示意图,画各种示意图,甚至自己没画过而只看过书上的图……能从本质上理解指针、理解函数参数传递吗?本人深表怀疑!
这辈子不种麦不收麦不将麦粒拿去磨面;只吃馒头、吃面条、吃面包、……甚至从没看过别人怎么蒸馒头,压面条,烤面包,……能从本质上理解面粉、理解面食吗?本人深表怀疑!!

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?

不要写连自己也预测不了结果的代码!
cao_julians 2012-09-03
  • 打赏
  • 举报
回复
全局变量的初始化时类型转换应该是在编译时;
int x=(int)123.4;//因为此时初始化值是常量,编译时能算出来

语句中的类型转换应该是在运行时;
x=(int)(y*z+0.45);//此时必须完成表达式的运算(含变量),只能运行时进行类型转换
自信男孩 2012-09-03
  • 打赏
  • 举报
回复
应该是在编译的时候,因为编译后会确定代码长度,并且是加载时会将编译后的文件加载到内存中,这时,每个变量的大小是已经确定的。
hu7324829 2012-09-03
  • 打赏
  • 举报
回复
编译期可以确定代码中需要转换的地方, 运行期时直到你程序走到这一步就会发生真正的转换.
mujiok2003 2012-09-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 3 楼 的回复:

编译时确定是否类型转换,执行的时候发生转换。


编译时,怎样确定是否类型转换?
[/Quote]

1. 隐式转换
见到“=“时, 如果源类型和目的类型不一致,就会根据情况决定类型转换(类型提升或截断)
2. 显示转换
遇到类型转换运算符(),编译器会根据情况决定类型转换

BYD123 2012-09-03
  • 打赏
  • 举报
回复
编译的时候。
csoma 2012-09-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

编译时确定是否类型转换,执行的时候发生转换。
[/Quote]

编译时,怎样确定是否类型转换?
漫步者、 2012-09-02
  • 打赏
  • 举报
回复
执行期,编译期是检查的程序错误、内存分配成功等问题,而执行期则是执行你的代码程序。
KLH_0109 2012-09-02
  • 打赏
  • 举报
回复
应该是执行的时候
mujiok2003 2012-09-02
  • 打赏
  • 举报
回复
编译时确定是否类型转换,执行的时候发生转换。

gfvera 2012-09-02
  • 打赏
  • 举报
回复
两种不同的数据类型进行运算的时候。
整数和浮点数运算如果结果保存在整数里面会去掉小数位,保存在浮点里面会将结果添加小数位
Corner 2012-09-02
  • 打赏
  • 举报
回复
你结完帖子的时候
AnYidan 2012-09-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你结完帖子的时候
[/Quote]

++

69,336

社区成员

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

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