c语言int转为long,转换-当我在C中将long int分配给int时会发生什么?

在最近的一项家庭作业中,有人告诉我使用long变量来存储结果,因为它可能很大。

我决定在我的系统(Intel Core i5 / 64位Windows 7 / gnu gcc编译器)上检查对我来说真的很重要,并发现以下代码:

printf("sizeof(char) => %d\n", sizeof(char));

printf("sizeof(short) => %d\n", sizeof(short));

printf("sizeof(short int) => %d\n", sizeof(short int));

printf("sizeof(int) => %d\n", sizeof(int));

printf("sizeof(long) => %d\n", sizeof(long));

printf("sizeof(long int) => %d\n", sizeof(long int));

printf("sizeof(long long) => %d\n", sizeof(long long));

printf("sizeof(long long int) => %d\n", sizeof(long long int));

产生以下输出:

sizeof(char) => 1

sizeof(short) => 2

sizeof(short int) => 2

sizeof(int) => 4

sizeof(long) => 4

sizeof(long int) => 4

sizeof(long long) => 8

sizeof(long long int) => 8

换句话说,在我的系统上,long和int是相同的,并且对于int来说太大而无法容纳,对于long来说太大也将无法容纳。

作业分配本身不是这里的问题。 我想知道如何在long的系统上将int分配给long?

我知道以下事实:与此主题相关的问题很多,但我觉得这些问题的答案并不能使我完全理解过程中将会发生或可能发生的情况。

基本上,我试图找出以下几点:

我应该在作业前将long投射到int还是自long不是不同的数据类型,而只是修饰符,这将是认为直接分配无害吗?

在long的系统上会发生什么? 结果会是不确定(或无法预测),否则会导致要忽略的变量?

从long到int的转换如何在C中工作?

当我不这样做时,从long到int的分配如何在C中工作使用铸造?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值