C/C++题目--基本数据类型

男娘i 2022-01-14 09:23 404阅读 0赞

题目:一个float变量赋值为3.1时,为什么printf输出的值为3.0999999?(在VS环境下,输出为3.1000000)

【答案】

计算机是用二进制来表示浮点数和整数的。在十进制里,0.1是个简单、精确的小数,但是转换二进制表示却是循环小数0.0001100110011…。因此,3.2在十进制可以准确地表示,在二进制却不能。但二进制转换为十进制时,该数值便就不一致了。

题目:

  1. double ab;
  2. //…
  3. if(a==b)
  4. {//是否相等。}

【答案】

不相等。

解决:

#include

if((fabs(a-b)<=epsilon*fabs(a)))

题目:以下程序代码,输出结果是什么?

  1. bool b=-7;
  2. BOOL B=-7;
  3. cout<<b<<B<<endl;
  4. b=2;
  5. B=2;
  6. if(b==true)
  7. cout<<"满足b==true条件"<<endl;
  8. if(B==TRUE)
  9. cout<<"满足B==true条件"<<endl;

【答案】:

1 -7

满足b==true条件

请按任意键继续. . .

【分析】

区别:

(1)bool具有两个值true(1)或者false(0)。BOOL也具有两个值TRUE(1)和FALSE(0)。

(2)bool只占1个字节,而BOOL占用空间由编译器决定的,一般是4个字节。

(3)bool是布尔型,而BOOL在WinDef.h头文件里定义是整型。

(4)bool的值为非零数(包括正负的浮点数和整数),其结果都为1,即true.而BOOL类型的值要么是TRUE,要么就是FALSE。如果某值不是这两个值中的一个,该值在TRUE和FALSE的条件下都不成立。

题目:对于单精度浮点数-21.375在内存中存放的实际数据是什么?请写一段程序,当输入一个单精度浮点数时,打印出该浮点数在内存中实际存放的数。

【答案】

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW4xMDgzMzc2NTEx_size_16_color_FFFFFF_t_70

题目:在嵌入式编程中,经常会看到u8、u16、u32和u64的数据类型,请问它们代表的意义是什么?为什么要这么写?

【答案】

一般在x86体系的Linux系统中,u8、u16、u32和u64的数据类型定义如下:

typedef unsigned char u8;

typedef unsigned short u16;

typedef unsigned int u32;

typedef unsigned long long u64;

原因如下:

(1)编写代码更方便,用简短的字符替代了冗长的字符。

(2)提高代码的可移植性,比如在不同平台下它们所对应的数据类型可能不同。比如u64,在一些平台下定义为

typedef unsigned long u64;

题目:已知整数(4字节)在内存中的内容,打印出该整数实际的值,请用C程序实现。

【提示】

考虑大小端字节序。举例,在内存中从低到高地址中存放的内容为12 34 ab cd(十六进制数),如果CPU是小端字节序,那么它对应的整数值为:0xcdab3214;如果该CPU是大端字节序,那么它对应的整数值为:0x1234abcd。

【解析】

该题目考查大小端字节序的移植性问题。在嵌入式开发中,C程序经常会在多个不同CPU体系下执行,所以不同CPU的大小端字节序问题是必要考虑的事情,否则程序就会因为平台兼容性问题而产生重大隐患。通常,在嵌入式开发调试过程中可以获得内存中的数据内容,根据这些数据可以验证程序的正确性,于是会出现这样的情况,比如已经从内容中打印出了一个整数的数值内容,但由于不确定CPU的字节序,所以无法直接确定该数值的正确结果,此时可以编写一个函数来实现整数值的正确解析。参考实现代码如下。

题目:以下代码输出结果为多少?

  1. int main()
  2. {
  3. unsigned char a=-1;
  4. signed char b=-1;
  5. char c=-1;
  6. printf("a=%d,b=%d,c=%d",a,b,c);
  7. return 0;
  8. }

答:a=255,b=-1,c=-1

【解析】

signed char取值范围为-127—127,unsigned char取值范围为0—255,至于char取值范围取决于编译器和编译时所用的选项。

在VS环境下,该char型域signed char相同。

发表评论

表情:
评论列表 (有 0 条评论,404人围观)

还没有评论,来说两句吧...

相关阅读

    相关 基本数据类型

    什么是数据类型? 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字

    相关 基本数据类型

    Python支持多种数据类型 在计算机内部,可把任何数据都看成一个对象,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来   整数  

    相关 基本数据类型

    什么是数据?为何要有多种类型的数据 数据就是变量的值比如变量name=liuqi,age=67,old\_boy=43 那么它一共有几种类型呢? 一共有5种 int\整