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个字节
数的表示范围为:-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语言无符号长整形赋值问题,在线等,求解答!!!的主要内容,如果未能解决你的问题,请参考以下文章