c语言的每条可执行
1. c语言中的每条执行语句都需要用分号结束吗
在 C 程序中,分号是语句结束符。每个语句必须以分号结束。它表明一个逻辑实体的结束。
C语言中分号被用作为语句结束的标志,如果在C程序中不小心多写了一个分号,那么该分号也许会被视作一个空语句;或者编译器会因为这个多余的分号而产生一条警告信息,根据警告信息的提示往往会很容易找到多余的分号。
如:
If (x>b);
b=x;
多余的分号会被解释为空语句,实际产生的效果是:
If(x>b){}
b=x;
也就是说当x>b时,执行空语句,在任何情况下会执行b=x。
如果在C程序中漏写了一个分号,就表示当前语句并没有结束,同样会差错。如:
If(n<3)
return
log.date=x[0];
log.time=x[1];
log.code=x[2];
因为return 后漏写了一个分号,表示该语句还没有结束,实际效果相当于:
If(n<3)
return log.date=x[0];
log.time=x[1];
log.code=x[2];
(1)c语言的每条可执行扩展阅读
1、C 语言中的语句块中是可以包含语句块的,语句块中的语句块被当。作一个简单的语句来处理。
2、若要写一个包含几个表达式语句和空语句的语句块,就可以用下面的形式:这是一个语句块的例子,其中包含四个已经了解的语句,依次为赋值表达式语句、空语句、除法运算表达式语句和按位取反表达式语句。
2. c源程序中每条可执行语句和注释部分最终都将被转换成二进制机器指令吗求解释,帮帮忙吧!
不正确。
每条可执行语句都会被转为二进制指令。
而注释部分不会被转换。
这个是常规的说法。
实际上,在编译器优化下,一些不会被执行的语句一样不会被转为二进制机器指令的。
比如
if(0) printf("xxxx");
这句一般都不会被转。
3. c语言的每条可执行语句和非执行语句最终都将会被转换成二进制的机器指令!为什么错了
1、首先打开vc6.0, 新建一个项目。
4. C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号,错在哪里
1不是分割符,是结束标志
2 生成obj文件
5. c语言中每条可执行和非执行语句最终都将被转化成二进制的机器指令 这句话对么
不对,首先非执行语句根本不会被编译,可执行语句像常数定义这种直接放到DATA段里面也不是机器指令
6. 一下叙述中正确的是A) c语言的源程序不必通过编译就可以直接运行B)c语言中的每条可执行的语句最终都将
A是错误的。C语言是通过编译计算机才能执行,因为计算机执行的是二进制码,而C语言却是人类能够读懂的语言,要通过编译程序(或者是汇编编写的或者是用C语言编写的)编译之后把指令送到CPU的指令存储器然后根据CPU的时钟信号一条以条的来执行指令所指示的“微指令”。
B选项没有描述清楚。
7. C语言中的每条可执行语句和非可执行语句最终都是将是背转换成二进制的机器指令为什么是错的
诸如括号、注释等非可执行语句并不会转化为机器指令,所以是错的。解决方法如下:
1、首先,编写For循环第一句。
8. 是否C语言的每条可执行语句最终都将被转成2进制的机器指令为什么
不是,预处理会去掉一部分代码。比如
#ifdef A
code block 1
#else
code block 2
#endif
如果A定义过,则code block 2不会生成机器指令。
9. C语言问答,并给出说明!谢谢!!!
我觉得D是错误的,这不一定,完全取决于编译器,请看下列简单程序:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a = 0;
++a;
++a;
++a;
printf("fuck me");
return 0;
}
再看这段代码的Release版的反汇编:
int _tmain(int argc, _TCHAR* argv[])
{
int a = 0;
++a;
++a;
++a;
printf("fuck me");
00BD1000 push offset string "fuck me" (0BD20F4h)
00BD1005 call dword ptr [__imp__printf (0BD20A0h)]
00BD100B add esp,4
return 0;
00BD100E xor eax,eax
}
00BD1010 ret
可以发现 ++a;是可执行的语句,但是编译器把他们忽略了,因为这些语句对输出没有影响。
再看下列代码:
int _tmain(int argc, _TCHAR* argv[])
{
int a = 0;
++a;
printf("a is %d", a);
return 0;
}
反汇编为:
int _tmain(int argc, _TCHAR* argv[])
{
int a = 0;
++a;
printf("a is %d", a);
00EB1000 push 1
00EB1002 push offset string "a is %d" (0EB20F4h)
00EB1007 call dword ptr [__imp__printf (0EB20A0h)]
00EB100D add esp,8
return 0;
00EB1010 xor eax,eax
}
00EB1012 ret
可见,编译器直接把
int a = 0;
++a;
替换为了
push 1
也可以看成是对
int a = 0;
++a;
的一种编译。
所以D错误,并非每条语句都会被编译为二进制代码.
10. 我们所写的每条c语句,经过编译最终都转化成二进制的机器指令为什么对
C语言中的注释是不会转化为二进制的。
第一句话,注意“每条c语句”,c语句是不包含注释,所以正确。
第二句话,“每条可执行语句和非执行语句”,显然注释语句也被包含在其中,所以错误。
这种题就是玩了个文字游戏