當前位置:首頁 » 編程語言 » c語言的每條可執行

c語言的每條可執行

發布時間: 2022-06-15 08:17:19

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語句是不包含注釋,所以正確。
第二句話,「每條可執行語句和非執行語句」,顯然注釋語句也被包含在其中,所以錯誤。
這種題就是玩了個文字游戲

熱點內容
數字電路存儲器實驗 發布:2025-02-07 04:13:29 瀏覽:812
在什麼地方查qq密碼 發布:2025-02-07 04:01:51 瀏覽:11
買二手筆記本電腦看哪些配置 發布:2025-02-07 04:01:48 瀏覽:308
我的世界裡面什麼伺服器是建造的 發布:2025-02-07 03:51:48 瀏覽:189
不能連接到資料庫 發布:2025-02-07 03:47:00 瀏覽:45
安卓手機如何設置翻屏動畫 發布:2025-02-07 03:46:18 瀏覽:594
利基型存儲器什麼意思 發布:2025-02-07 03:43:58 瀏覽:556
安卓讀寫許可權在哪裡 發布:2025-02-07 03:29:21 瀏覽:36
釘郵怎麼找回密碼 發布:2025-02-07 03:16:40 瀏覽:81
比特幣錢包源碼 發布:2025-02-07 03:16:39 瀏覽:101