导航:首页 > 源码编译 > 相同代码编译出的指令数

相同代码编译出的指令数

发布时间:2022-05-05 19:55:49

① 为什么相同的代码相同的编译器在不同电脑上的运行结果不同

函数f1中的变量c,你在未初始化的情况下就使用了,就是这句while(c!=0)。这时c的值是不确定的。

② C语言的按照标识符、关键字、常用编译指令有哪些

我们可以在C源程序中插入传给编译程序的各中指令,这些指令被称为预处理器指令,它们扩充了程序设计的环境。现把常用的预处理命令总结如下:
1. 预处理程序
按照ANSI标准的定义,预处理程序应该处理以下指令:
#if #ifdef #ifndef #else #elif
#endif
#define
#undef
#line
#error
#pragma
#include
显然,上述所有的12个预处理指令都以符号#开始,,每条预处理指令必须独占一行。
2. #define
#define指令定义一个标识符和一个串(也就是字符集),在源程序中发现该标识符时,都用该串替换之。这种标识符称为宏名字,相应的替换称为宏代换。一般形式如下:
#define macro-name char-sequence
这种语句不用分号结尾。宏名字和串之间可以有多个空白符,但串开始后只能以新行终止。
例如:我们使用LEFT代表1,用RIGHT代表0,我们使用两个#define指令:
#define LEFT 1
#define RIGHT 0
每当在源程序中遇到LEFT或RIGHT时,编译程序都用1或0替换。
定义一个宏名字之后,可以在其他宏定义中使用,例如:
#define ONE 1
#define TWO ONE+ONE
#define THREE ONE+TWO
宏代换就是用相关的串替代标识符。因此,如果希望定义一条标准错误信息时,可以如下定义:
#define ERROR_MS “Standard error on input \n”
如果一个串长于一行,可在行尾用反斜线”\”续行,如下:
#define LONG_STRING “This is a very very long \
String that is used as an example”
3. #error
#error指令强制编译程序停止编译,它主要用于程序调试。#error指令的一般形式是:
#error error-message
注意,宏串error-message不用双引号包围。遇到#error指令时,错误信息被显示,可能同时还显示编译程序作者预先定义的其他内容。
4. #include
程序中的#include指令要求编译程序读入另一个源文件。被读入文件的名字必须用双引号(“”)或一对尖括号(<>)包围,例如:
#include “stdio.h”
#include <stdio.h>
都使C编译程序读入并编译头文件以用于I/O系统库函数。
包含文件中可以包含其他#include指令,称为嵌套包含。允许的最大嵌套深度随编译器而变。
文件名被双括号或尖括号包围决定了对指定文件的搜索方式。文件名被尖括号包围时,搜索按编译程序作者的定义进行,一般用于搜索某些专门放置包含文件的特殊目录。当文件名被双括号包围时,搜索按编译程序实时的规定进行,一般搜索当前目录。如未发现,再按尖括号包围时的办法重新搜索一次。
通常,绝大多数程序员使用尖括号包围标准的头文件,双引号用于包围与当前程序相关的文件名。
5. 条件编译指令
若干编译指令允许程序员有选择的编译程序源代码的不同部分,这种过程称为条件编译。
5.1#if、#else、#elif #endif
条件编译指令中最常用的或许是#if,#else,#elif和#endif。这些指令允许程序员根据常数表达式的结果有条件的包围部分代码。
#if的一般形式是:
#if constant-expression
Statement sequence
#endif
如#if后的常数表达式为真,则#if和#endif中间的代码被编译,否则忽略该代码段。#endif标记#if块的结束。
#else指令的作用与C语言的else相似,#if指令失败时它可以作为备选指令。例如:
#include <stdio.h>
#define MAX 100
Int main(void)
{
#if MAX>99
printf(“Compiled for array greater than 99.\n”);
#else
printf(“Complied for small array.\n”);
#endif
return 0;
}

③ 一选择题:处理器A每秒处理的指令时处理器B的2倍。

  1. D。

  2. 原因:处理器A每秒处理的指令是处理器B的2倍;某一特定程序P分别编译为处理器A和处理器B的指令,编译结果处理器A的指令数是处理器B的4倍(例如处理器A的指令数是40条,而处理器B的指令数是10条),已知程序P在处理器A上执行需要1个小时,那很显然处理器B需要半个小时。

  3. 处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

  4. 处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。

④ C语言同一段代码,同样的文件,编译器为什么运行结果不一样

一般来说,C语言程序被编译为可执行程序后,每次都输出都是相同的,但有些特殊情况例外,比如,代码中引入了随机变量,并让它出现在输出结果中。

⑤ 相同的源代码和编译环境,编译出来的可执行文件完全一致吗

不一定会一模一样,这还跟你的操作系统的环境配置有关。

⑥ 指令和代码相同吗

指令,其实是对CPU而言的。CPU每次从内存取出一个指令,内容是0和1组成的二进制数据。非常不易于辨认。人要想直接用01这样的机器代码(请注意,指令是代码)来编程,那么几乎是不可能的事。

于是人们发明了汇编语言。用一些符号来表示特定的指令机器码。这些符号写好之后,最后由编译器翻译成机器代码。因汇编语言的指令符号几乎和指令机器码一一对应,所以,汇编代码可以看做是指令(一组指令)。

然而,更高级的语言,c++等,显然就不是指令了。它已经很接近人类自然语言。

所以,指令是代码,而且分为机器码 或者是 助记符代码 ,然而,代码却不是指令。“代码”是一个通用词语。

⑦ 相同的代码,不同编译器下结果不同,究竟哪个是正确的

我觉得可能与代码有关系,不同编译器不同的编译模式是存在差异的,包括浮点运算,代码优化方面是有不同

⑧ 相同的c语言代码,在不同的编译器,不同的操作系统上面生成的指令是不是不同的

不同的CPU生成的指令不一样、不同的编译器C语言实现方式不一样、不同的操作系统API不一样。使用C语言只能做到源代码级别的跨平台和跨编译器。

⑨ 源代码行数与源指令数的关系

朋友,我的理解是多数情况下源代码数多于源指令数,但也不一定。

为何呢?因为源代码需要被翻译成obj文件,再被link,最后输出exe文件被执行,这个过程中,一些源代码,比如伪代码是编译器识别的,不会被翻译成处理器可识别的指令,因而代码数大于指令数。

然而,另一种情况,比如一条伪代码可能会翻译成指令,并且需要好几条指令去执行,这样翻译过后,指令数反而会比代码数更多。

如果只是把你写的代码称为源的话,那应该是源代码行数》=源指令数了 呵呵
不知是否正确,望其他网友指正。

⑩ 相同的二进制数在不同的程序中代表的指令相同吗

所有的程序首先会被编译成汇编语言,然后变成二进制数表示的机器语言,因而所有的编程对象,在执行指令时,都是二进制数(不存在什么八进制、十六进制)

阅读全文

与相同代码编译出的指令数相关的资料

热点内容
喷油螺杆制冷压缩机 浏览:579
python员工信息登记表 浏览:377
高中美术pdf 浏览:161
java实现排列 浏览:513
javavector的用法 浏览:982
osi实现加密的三层 浏览:233
大众宝来原厂中控如何安装app 浏览:916
linux内核根文件系统 浏览:243
3d的命令面板不见了 浏览:526
武汉理工大学服务器ip地址 浏览:149
亚马逊云服务器登录 浏览:525
安卓手机如何进行文件处理 浏览:71
mysql执行系统命令 浏览:930
php支持curlhttps 浏览:143
新预算法责任 浏览:444
服务器如何处理5万人同时在线 浏览:251
哈夫曼编码数据压缩 浏览:426
锁定服务器是什么意思 浏览:385
场景检测算法 浏览:617
解压手机软件触屏 浏览:350