关于C语言中long型数据赋给int型变量

2020-12-02 13:36:04 字数 3864 阅读 4386

1楼:匿名用户

区分编译器类型,long数据赋值给int数据会有不同的结果。

1 16位编译器:

int型变量占2字节,long类型变量占4字节。当long赋值给int时,会截取低两字节数据给int。

如long a = 0x12345678;

int b = a;

则b的值为0x5678。

2 32位编译器:

int和long都是占4字节,所以二者赋值不会有任何改变。

3 64位编译器:

int占4字节,long占8字节。当long赋值给int时,会截取低四字节数据给int。

2楼:匿名用户

long好像是64位,int是32位,在内存中的表示是:低位在左,高位在右。long的65536的十六进制00010000h,分高低位在内存中放的位置为0000 0001,赋值给int时,只截取前面部分的0000,所以就是值就是为0了

c语言中,如何将long int型变量的地址赋给char型变量?

3楼:匿名用户

char不行吧 ,肯定要字符串啊

string s;

long int i;

s=(char*)&i;试试

有关c语言中int型数据的取值范围的问题

4楼:匿名用户

计算机内的数据都是补码形式的。因为正数的补码和原码相同,所以正数存放的是他的原码,负数是存放的他的补码(补码求法:取负数的绝对值写成二进制形式,按位取反,加1,就得到了他的补码),这样是为了计算机运算时的简单。

【-32767】补=10000000 00000001 【32767】补=【32767】原=01111111 11111111

计算-32767+32767时计算机内的运算就是:10000000 00000001+01111111 11111111=00000000 00000000

是不是简单很多呢?这下明白了吧?

5楼:匿名用户

最前面的一位是表示它的符号!

c语言 关于“长”数据赋给“短”变量的问题,比如long int 赋值给int 中怎么样才能没有误差?

6楼:匿名用户

在低位部分的首位不是1时不会有误差。

如果低位部分首位是1,那就会出现你看到的负值了。

7楼:叶小怜

当long int的值的范围在int之内时

8楼:匿名用户

这就是典型的赋值溢出。

由于整型数据在内存中是有补码形式存在。

long型赋值给short型时,去掉高位部分。

如果想不产生这种问题。那么long型的数据范围。一定要在short型范围之内。也就是说。必须在-32768~32767之间。

c语言中double 和int型的数据之间可相互赋值?

9楼:匿名用户

可以。 如:

double a=1.2;

int b;

b=a; b=1;//取整了

int a=1;

double b;

b=a; b=1.00000

(1)double(双精度浮点型)是计算机使用的一种资料型别。比起单精度浮点数(float),double(双精度浮点数)使用 64 位(8字节) 来储存一个浮点数。

(2)int是将一个数值向下取整为最接近的整数的函数。int是数据库中常用函数中的取整函数,常用来判别一个数能否被另一个数整除。

c语言中 长整型long 低16位 赋给整型int 语句如何写?

10楼:匿名用户

#include "stdio.h"

void main()

11楼:示申佥

用按位与运算处理

long a=90;

int b=0xffff &a

0xffff是16进制的

,转成二进制: 1111 1111 1111 111116个1,

0xffff&a

之后,除了低16位,其它位全部被置0

达到了把低16位得出来,赋给b的目的。

12楼:匿名用户

位运算,用&强制将高位置空,然后赋值给int即可

c语言中long型的65530转化为int型是多少啊?为什么啊?

13楼:匿名用户

int的范围是-32768至+32767,这个long的65530超过int的取值范围了。先把long的值转换成2进制,long型数据赋给int型变量时,将低16位值送给int型变量,而将高16 位截断舍弃。将int型数据送给long型变量时,其外部值保持不变,而内部形式有所改变。

14楼:上帝模式

还是65530,long型与int都是占4个字节,long转换为int不需要强制减少字节

下面是测试程序

void main( )

15楼:匿名用户

你试试这样:

long a=65530;

printf("%d",(int)a);

c语言中将一个浮点型赋值给整型时,会不会四舍五入?

16楼:幻翼高达

c语言中将一个浮点型赋值给整型时,不会四舍五入,会直接舍去小数部分的数据,也可以认为是执行了下取整运算。

将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个0。注意:

赋值时的类型转换实际上是强制的。

例如执行赋值后,无论5.4还是5.6都会变成5。

17楼:_梦幻阳光

不会的,不过可以写一个函数自己转换啊

#include

int fun(float x)

int main()

打印的为3和4,c语言很灵活的,楼主想要什么几乎都能实现

18楼:匿名用户

不会的,如int x; 如果有 x=4.78; 则x的值是4

19楼:匿名用户

不会,后面的小数就直接没了,只有整数部分了

采纳我哦

20楼:匿名用户

不会的啦,整型的话,1/2=0,而不是0.5或者1,但整型变成浮点型要强制类型转换,不知这么解释明白不。?

21楼:龍__鳳

不会的,看程序的运行结果:

22楼:路过

你好,不会的。浮点型数据赋给整型时,浮点型就会被自动转换成整型,整型只是整数部分。

希望能够帮到你。

23楼:匿名用户

不会,一般是给你强转成整形了,小数位就没了,四舍五入是不存在的

24楼:匿名用户

不会,只会把整数部分赋给整型变量

25楼:匿名用户

不会,比如float a=4.45 那么 printf("%d",a);输入为4,直接把小数点后面的数删去,不是四舍五入

c语言能将long类型直接赋值给longlong类型吗

26楼:匿名用户

可以,以上运行过程中会自动将long类型数据转换为long long类型,而后赋值。

C语言中如何把感叹号!赋值给字符型常量

1楼 匿名用户 赋值给一个字符型常量是什么意思?c语言中只有变量才能够赋值,如一个字符型变量ch char ch 如是想用一个符号来表示一个常量,可以通过宏定义语句实现,如定义ch为常量 define ch 这样程序中就可用ch表示感叹号了。但是这样的定义在程序中只能做一次,即ch定义后不能再修改。...