c语言无符号长整形赋值问题,在线等,求解答!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言无符号长整形赋值问题,在线等,求解答!!!相关的知识,希望对你有一定的参考价值。

用的win-tc
3600*24应该等于86400, 但输出值却是20864
是哪儿出问题了呢?
请大侠指出问题所在,并希望能简单叙述下原理过程。本人菜鸟……
以下源代码:

#include<stdio.h>

void main()

unsigned long int t;

t=3600*24;
printf("%lu\n",t);
getch();


直接给变量赋值是可以输出的。
如:t=86400 输出的值就没错
应该说明unsigned long 也是占4个字节

在TC下,一个整数默认情况下是两个字节的内存单元存放(VC一个整数默认情况下是四个字节)
数的表示范围为:-32768 ~ 32767
3600*24=86400=0x15180 已超出范围,实际赋给变量的值不是0x15180,而是0x5180=20864
所以赋值的要写成:t = 3600 * 24L;(L表示长整形数)
参考技术A 我在VS上输出地是86400呀,估计你的TC需要更改设置~

估计在你当前的设置里面unsigned long int t;是16位
参考技术B 说明win_tc的unsigned long int也是16位的,86400装不了(最大65535),溢出了。如果在VC下,这个就没有问题。 参考技术C 要这样写才行
t=3600*24L;

你不加 L 常数会认为是整型数,
3600*24=86400=0x15180 已经超限了,只会取 0x5180也就是20864赋值给 t

C语言中,int,uint,cuint的区别是啥?

在移植PIC程序时,遇到int,uint,cuint这三个,分不清区别呢。求大神指教

参考技术A int是整型数,例如-1,0,1都是
uint是unsigned
int,即无符号整型,例如0,1,2.。。等
cuint没有接触过。
参考技术B int就是整数
uint
就是无符号整数
cuint就是const无符号整数
参考技术C int
是整形
uint
是无符号整形
cuint
在C语言标准中好像没有吧,应该是程序员自定义的

以上是关于c语言无符号长整形赋值问题,在线等,求解答!!!的主要内容,如果未能解决你的问题,请参考以下文章

C语言之数据类型(知识点8)

c++中定义一个无符号的整形不赋值默认值是多少 unsigned int point;

C语言中,int,uint,cuint的区别是啥?

c语言整型范围是多少

C语言中的整型变量是啥意思?求详解

2018秋季学习总结