搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 请问 unsiged long long a = 2*0x7FFFFFFF 是啥意思?
标题:
请问 unsiged long long a = 2*0x7FFFFFFF 是啥意思?
只看楼主
li362490567
等 级:
新手上路
帖 子:89
专家分:8
注 册:2015-7-9
结帖率:
0
楼主
问题点数:0 回复次数:7
请问 unsiged long long a = 2*0x7FFFFFFF 是啥意思?
#include<stdio.h>
int main(void)
{
unsigned long long a=0x7FFFFFFF;
unsigned long long c=2*0x7FFFFFFF;
printf("%llu %d\n%llu",2*a,c);
}
为什么 我得到的 2*a和c的值不一样?
2016-01-13 20:42
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
2
楼
得分:0
不知道你這個程序想測試什麽、在什麽環境下得到什麽結果。換句話説,這程序得到什麽結果,本來就與機器和環境有關,這是它刻意選擇這個數據和計算的原因,哪抄來的,就看作者自己的解釋。而你的問題,除了不清楚程序想得到什麽,還與你連抄都出現錯誤有關。根本就不知道你説的現象是什麽。
授人以渔,不授人以鱼。
2016-01-14 00:11
qq851429790
等 级:
新手上路
帖 子:5
专家分:2
注 册:2015-12-24
第
3
楼
得分:0
定义一个16进制的无符long long 型数字
2016-01-14 08:56
li362490567
等 级:
新手上路
帖 子:89
专家分:8
注 册:2015-7-9
第
4
楼
得分:0
回复 2楼 TonyDeng
#include<stdio.h>
int main(void)
{
long long a=0x7FFFFFFF;
long long b=0x7FFFFFFF;
long long c=a+b;
long long e=0x7FFFFFFF+0x7FFFFFFF;
printf("%llu\n%llu",c,e);
}
我就想问一下,为什么输出的c和e的结果不一样?
2016-01-14 09:23
rjsp
等 级:
版主
威 望:
507
帖 子:8890
专家分:53117
注 册:2011-1-18
第
5
楼
得分:0
回复 4楼 li362490567
0x7FFFFFFF+0x7FFFFFFF 是什么类型?
2016-01-14 09:31
li362490567
等 级:
新手上路
帖 子:89
专家分:8
注 册:2015-7-9
第
6
楼
得分:0
回复 5楼 rjsp
long long
2016-01-14 09:35
demon90s
等 级:
论坛游侠
威 望:
1
帖 子:44
专家分:121
注 册:2016-1-3
第
7
楼
得分:0
数字做操作数的类型是int,两个0x7FFFFFFF加起来已经超过了int类型的长度,因此再作为int类型存储的话就不能正确存储了。
所以不一样。
2016-01-14 09:53
rjsp
等 级:
版主
威 望:
507
帖 子:8890
专家分:53117
注 册:2011-1-18
第
8
楼
得分:0
以下是引用
li362490567
在2016-1-14 09:35:10的发言:
long long
你言之凿凿,我也没办法。
sizeof(0x7FFFFFFF+0x7FFFFFFF) vs. sizeof(long long)
2016-01-14 12:41
8
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-461073-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.070641 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved