C语言练习题

简介: C语言练习题

1.这个题目涉及到整型提升和截断

#include<stdio.h>
int main()
{
  unsigned char a = 100;
  //00000000000000000000000011001000
  //11001000
  unsigned char b = 200;
  //00000000000000000000000001100100
  //01100100-----b
  //11001000-----a
  //00000000000000000000000100101100
  unsigned char c = 0;
  c = a + b;
  //00101100-------c-----44
  printf("%d %d", a + b, c);
  return 0;
}

a+b的打印结果是300,c的打印结果是44;

(1)分别用二进制表示100,200;

(2)因为100,200要放到无符号的字符类型里面去,而无符号的字符类型只能存放8个比特位,所以会发生截断现象;

(3)a+b时候,会发生整型提升,就是把其他的类型转换成int类型,因为a,b都是无符号的,所以就是高位全部补上0,也就是回到了截断前的二进制序列;

(4)执行加法,a+b就是对应位的数字相加,这样第九位就有了一个数字1;

(5)直接输出a+b,以%d的形式打印,就把这个序列当作有符号的,毫无疑问就是这个32比特位计算的值,也就是原来的100+200=300;

(6)放到c里面的话,就只能保留8个比特位(这样第9位的1就丢失了),打印的时候,需要进行整型提升,c是无符号的,只能高位补上0,高位时0则是正数,原码反码补码都一样,打印44;

相关文章
|
7月前
|
C语言
c语言编程练习题:7-50 输出华氏-摄氏温度转换表
c语言编程练习题:7-50 输出华氏-摄氏温度转换表
86 0
|
7月前
|
C语言
c语言编程练习题:7-49 Have Fun with Numbers
c语言编程练习题:7-49 Have Fun with Numbers
67 0
|
7月前
|
C语言
c语言编程练习题:7-46 爬动的蠕虫
c语言编程练习题:7-46 爬动的蠕虫
66 0
|
7月前
|
C语言
C语言练习题 温度自动转换‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪
C语言练习题 温度自动转换‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪
|
7月前
|
C语言
c语言编程练习题:7-60 Welcome to You!
c语言编程练习题:7-60 Welcome to You!
79 0
|
7月前
|
C语言
c语言编程练习题:7-52 求简单交错序列前N项和
c语言编程练习题:7-52 求简单交错序列前N项和
67 0
|
7月前
|
C语言
c语言编程练习题:7-51 求奇数分之一序列前N项和
c语言编程练习题:7-51 求奇数分之一序列前N项和
76 0
|
7月前
|
C语言 数据安全/隐私保护
C语言练习题
C语言练习题
47 1
|
6月前
|
人工智能 算法 Java
|
7月前
|
存储 C语言
C语言从入门到实战——数组和指针的强化练习题
C语言中指针和数组有着密切的关系,因为数组名在C语言中可以看作是一个指针常量。 指针是一个变量,存储的是另一个变量的地址。可以通过指针来访问另一个变量的值。指针变量可以存储任何类型的地址,包括数组的地址。 数组是一组相同类型的数据元素的集合。在C语言中,可以用数组名来表示整个数组,在这个意义上,数组名看起来像一个指针变量。实际上,数组名在C语言中可以看作是一个指向数组首元素的指针常量。
67 0