菜鸟求助:一个c语言关于数据类型的问题

《c程序设计》谭浩强第三版,p45第五段介绍:
在一个整常量后面加一个字母l或者L,则认为是long int型常量,例如 123l、432L、0L等,这往往用于函数调用中如果函数的形参为long int型,则要求实参也为long int型。
(这么说,这时若实参为123,就不行了对吧,可是请看下列代码:)
#include<stdio.h>
void main()
{
int a;
long b;
long method(long);
a = 123; //直接将123l赋给a,经vc++调试也可以正常运行。不解?
b=method(a);
printf("%d\n",b);
}
long method (long x)
{
return (x*x);
}
//经vc++调试程序竟然可以正常运行,不解?
疑问:请高手列举例程给予解释,书上的阐述,在编程中如何得到体现呢?

第1个回答  2011-08-28
这是c的特点啊,编辑器可以使用类型的默认强制转换,比如你扔个字符过去,它也一样吞下去。
a = 'a';

象bool, byte, char, int, float 这些类型就经常转来转去的。如果你真想把握得住,一是多上机体验,二是在将来学习汇编和计算机组成原理这些课程。
第2个回答  2011-08-29
隐式转换的问题,上网或者看看书就明白了本回答被提问者采纳
第3个回答  2011-08-28
我也是新手 我觉得他意思
可能是function(long int 164)
你使用的时候
int a=2;
function(2L);
相似回答
大家正在搜