学机械的同学最近搞嵌入式程序,问了我两个C语言的问题
====================================================================================
1.b=*P++,是什么操作?
2.int a;*P1
float f=2.5, *P2;
P2=&f
P1=(int)P2
a=*P1;
问a等于几?
===================================================================================
第一个问题,我说*运算符比++优先级高,所以应该先取值再加1,不信可以看《C程序设计语言》(第二版)的第五章第二页
实际答案是:*与++优先级一样,运算是从右到左结合,所以是先执行++,然后取值,只不过++是后置运算符,下次才能生效
我,汗了一把!靠记忆不如靠理解
第二个问题,他直接把答案告诉我了,我又汗了一把,明显对我的期望值降低了不少
让我解释
我不懂,内心狂郁闷
先查float的存储原理
(1)2.5的二进制科学计数法是1.01*2^1
(2)然后符号位是0
(3)指数位是(基数)127+1=128,二进制表示是1000 0000
*因为指数的范围是—127~128,所以设计存储时的指数=元数据+127
(4)尾数是01,也就是010 0000 0000 0000 0000 0000
全部字段表示出来就是
0|1000 0000|010 0000 0000 0000 0000 0000
4byte的存储单元分别是
mem[3]=0x40
mem[2]=0x20
mem[1]=0x00
mem[0]=0x00
a=*P1操作取出的整数值
0100 0000 0010 0000 0000 0000 0000 0000
很大
这两个简单的例子我初学时候根本就没深究过,很是惭愧!现在基本上还是从零开始,前车之鉴啊
分享到:
相关推荐
### 两个数相加C语言实现 #### 背景介绍 在计算机编程领域,特别是对于初学者来说,实现两个数相加是一个非常基础且重要的练习。本篇文章将基于提供的C语言代码,深入分析如何使用C语言来实现两个字符串表示的大...
3.15 我要检查一个数是不是在另外两个数之间,为什么if(abc)不行? 3.16 为什么如下的代码不对?inta=1000,b=1000;longintc=a*b; 3.17 为什么下面的代码总是给出0?doubledegC,degF;degC=5.0/9*(degF-32); ...
这两个函数是C语言进行交互的基本方式之一。 4. 控制结构:switch语句用于基于不同的条件执行不同的代码块。它提供了基于用户输入来选择不同操作(如加法、减法、乘法和三角函数计算)的能力。 5. 变量和数据类型...
例如,以下是一个简单的for循环示例: ```c for (int i = 0; i ; i++) { printf("%d ", i); } ``` 这段代码会打印从0到9的数字。 函数是C语言中的重要组成部分,它们封装了一段可重用的代码。函数可以接受参数并...
在C语言中,字符串连接是将两个或多个字符串合并成一个新字符串的过程。这个操作在编程中非常常见,尤其是在处理用户输入或者格式化输出时。本文将深入探讨如何在C语言中实现两个字符串的连接。 首先,理解C语言中...
源代码通常由一系列函数组成,比如用于初始化城市位置的函数、计算两个城市间距离的函数、以及实现特定求解策略(如 nearest neighbor、2-opt 或遗传算法)的函数。通过阅读源代码,我们可以理解算法的工作原理,...
本篇文章将详细讨论如何使用C语言来实现两个1000位数字相乘的算法。这个程序是针对大数相乘问题的一个解决方案,适用于处理超过常规整型变量范围的大型整数。 首先,我们需要理解C语言的基础数据类型,如int、long...
- 使用冒泡排序算法实现,通过比较两个相邻物品的单位价值,如果前一个物品的单位价值小于后一个,则交换这两个物品的位置,直到整个数组按单位价值降序排列。 3. **贪心选择函数** `greed`: - 接受物品数组、...
融合了用户交互、棋盘状态管理、游戏逻辑判断和计算机决策等多种编程技术,对于初学者来说,这是一个很好的实践项目,有助于理解C语言的基本语法和控制流程,同时也能培养问题解决和算法设计的能力。通过深入研究这...
该简易C语言航空订票系统是一个基础的模拟程序,用于教授C语言编程和软件开发的基本概念。这个系统可能包括乘客信息管理、航班信息管理、预订机票、取消预订等功能,为初学者提供了一个实际的项目练习场景。 在...
对于点的表示,我们可以定义一个结构体,包含两个成员变量来表示x和y坐标,如下: ```c typedef struct { int x; int y; } Point; ``` 接着,我们可以编写一个函数来比较两个点的顺序,通常是以逆时针方向排序,...
分治法是计算机科学中一种重要的算法设计策略,它的核心思想是将一个复杂的问题分解成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。在C语言中实现分治法,...
`:声明两个双精度浮点型变量a和b,用于存储输入的数值。 - `char c;`:声明一个字符型变量c,用于存储用户输入的操作符。 - **输入获取**: - 使用`scanf("%lf%c%lf", &a, &c, &b);`获取用户输入的两个数字和一个...
在本项目"基于C语言的简易连连看"中,我们主要探讨如何利用C语言这一基础编程语言来实现一个简单的电脑游戏——连连看。C语言以其高效、简洁和强大的底层控制能力,是许多初学者和专业程序员学习编程的首选。在这个...
c语言连接两个字符串。 在C语言中,可以使用strcat函数来连接两个字符串。在这个示例中,我们首先定义了两个字符串 str1 和 str2。然后使用 strcat 函数将 str2 的内容连接到 str1 的末尾。最后,打印出连接后的字符...
《控制台简易C语言五子棋小游戏》 在信息技术领域,C语言是一种基础且强大的编程语言,被广泛用于系统开发、软件工程以及教学。本文将详细介绍一个基于控制台的C语言实现的五子棋小游戏,这是一款适用于初学者的...
当两个小球发生碰撞时,它们之间的相互作用力会使它们的速度发生改变。这个改变遵循动量守恒定律,即两个小球碰撞前后的总动量保持不变。同时,如果忽略摩擦和空气阻力等因素,碰撞过程中的动能也应保持不变。因此,...
在编程领域,分治法是一种常用的算法设计策略,它的核心思想是将复杂的问题分解成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个过程可以递归进行,从而...
例如,一个简单的例子可能是用C语言编写一个程序,该程序接受用户输入的两个数字,然后找出它们的最大值。这会涉及到变量声明、输入输出操作(scanf和printf)、条件结构(if...else)以及基本的算术运算。这样的...
首先初始化前两个月的兔子对数,然后从第三个月开始,每个月的兔子对数等于上两个月的和,直到计算到给定的月数n。这种方法简单明了,但效率较低,因为每次循环都要进行一次加法操作。 2. **使用递归函数**:这种...