當前位置:首頁 » 編程軟體 » 編譯看左邊運行看左邊

編譯看左邊運行看左邊

發布時間: 2023-04-18 00:49:23

A. c語言i++,i--問題

這個題主要考你運算符優先順序,這個結合方向是從右向左,所以先看右邊,再看左邊。再就是++的演算法,i++的話是先對其操作再++,這里就是先信碼輸出再++;++i是先++再隨其操作,所以就是先++再輸出

我覺得是8778,就是從右往悄配左算啟坦指:
i--是先輸出8;然後此時i為7;
i++是先輸出7;然後此時i為8;
--i是輸出7;i也為7;
++i是輸出8;i也為8;
這是我在linux下邊編譯的,結果是8778,你確定編譯出來是8788?

B. 如何在VS2010中運行編譯C和C++

VS2010需要先新建工程項目,接著在源文件中添加cpp文件,然後再編寫代碼,最後編譯運行就可以,下面是創建執行C++程序的步驟:

1、首先新建項目(文件-->新建-->項目)

C. C++代碼怎樣看運行順序,代碼看一段不知道下面從什麼地方開始看啦。

按F9 在當前鼠滑型標出下斷點,斷點必須在程序可以運行到的語句處
菜單 工具-->開始調試,就會停在斷點處

F10 單步執行語句,遇到函數調用會越過
類似於匯編下debug的 p命令
F11 單步執行語句,遇到函數調用會跟進
類似於匯編下debug的 t 命令

滑鼠在某處右擊,選run to cursor,代碼就會執行到當前仿扒滑鼠位置的語句信大猜,
類似於匯編下debug的 G 命令

D. 在java多態中,編譯看左邊,運行看右邊是什麼意思,哪位大俠能幫忙詳細解釋一下 謝謝了.

Animal c = new Cat(); 左邊是 Animal 類(或介面) 右邊是 Cat()類; 在編譯的時候編譯器不管你右邊是什麼類,只要左邊的Animal類(或介面)能編譯通過就不會報錯。但是運行的時候就要按照右邊的Cat()類實際情況來運行。

E. ++a || ++b && ++c在C語言中怎麼計算

int a=0,b=0,c=0,k=0;//以下用到的所有變數都賦初值0

k=++a || ++b &&++c;

printf("a=%d b=%d c=%d ",a,b,c);

printf("k=%d ",k);


分析

很多地方說此處計算要用到優先順序,其實不然

1、如果按照優先順序相等來運算: ++a後a==1,++b被短路b==0,c==1

則應輸出 a=1 b=0 c=1 k=1

編譯運行:


分析正確

F. 程序編譯錯誤不知道是什麼原因

不能通編譯過的程序實際上還不是合法的程序,因為它不滿足C語言對於程序的基本要求。

檢查語法錯誤的第一要義:集中力量檢查系統發現的第一個錯誤,弄清並改正它。

在編譯過程中系統發現的錯誤主要有兩類:基本語法錯誤和上下文關系錯誤。這些錯誤都在表面上,可以直接看得見。也是比較容易弄清,比較容易解決的。關鍵是需要熟悉C語言的語法規定和有關上下文關系的規定,按照這些規定檢查程序正文,看看存在什麼問題。

編譯中系統發現錯誤都能指出錯誤的位置。不同系統在這方面的能力有差異,在錯誤定位的准確性方面有所不同。有的系統只能指明發現錯誤的行,有的系統還能夠指明行內位置。

一般說,系統指明的位置未必是真實錯誤出現的位置。通常情況是錯誤出現在前,而系統發現錯誤在後,因為它檢查到實際錯誤之後的某個地方,才能確認出了問題,因此報出錯誤信息。要確認第一個錯誤的原因,應該從系統指明的位置開始,在那裡檢查,並從那裡開始向前檢查。

系統的錯誤信息中都包含一段文字,說明它所認定的錯誤原因。應該仔細閱讀這段文字,通常它提供了有關錯誤的重要線索。但也應該理解,錯誤信息未必准確,有時錯誤確實存在,但系統對錯誤的解釋也可能不對。也就是說,在查找錯誤時,既要重視系統提供的錯誤信息,又不應為系統的錯誤信息所束縛。

發現了問題,要想清楚錯誤的真正原因,然後再修改。不要蠻干。在這時的最大誘惑就是想趕快改,看看錯誤會不會消失。但是蠻乾的結果常常是原來的錯誤沒有弄好,又搞出了新的錯誤。

另一個值得注意的地方:程序中的一個語法錯誤常常導致編譯系統產生許多錯誤信息。如果你改正了程序中一個或幾個錯誤,下面的弄不清楚了,那麼就應該重新編譯。改正一處常常能消去許多錯誤信息行。

解決語法錯誤

常見語法錯誤:

1)缺少語句、聲明、定義結束的分號。

2)某種括弧不配對。C語言中括弧性質的東西很多,列舉如下:
( ), [ ], { }, ' ', " ", /* */
在不同位置的括弧不配對可能引起許多不同的錯誤信息。

3)關鍵字拼寫錯誤。

較難認定的典型錯誤:

1)宏定義造成的錯誤。這種東西不能在源程序文件中直接看到,是在宏替換之後出現的。常見的能引起語法錯誤的宏定義錯誤:宏定義中有不配對的括弧,宏定義最後加了不該有的分號,……

解決上下文關系錯誤

1)變數沒有定義。產生這個問題的原因除了變數確實沒有大意外,還可能是變數的拼寫錯誤,變數的作用域問題(在不能使用某個變數的地方想去用那個變數)。

2)變數重復定義。例如在同一個作用域里用同樣名字定義了兩個變數,函數的局部變數與參數重名等。

3)函數的重復定義。可能是用同一個名字定義了兩個不同的函數。或者是寫出的函數原型在類型上與該函數的定義不相符。有時沒有原型而直接寫函數調用也可能導致這種錯誤信息,因為編譯程序在遇到函數調用而沒有看到函數原型或函數定義時,將給函數假定一個默認原型。如果後來見到的函數定義與假定不符,就會報告函數重復定義錯誤。

4)變數類型與有關運算對運算對象或者函數對參數的要求不符。例如有些運算(如 %)要求整數參數,而你用的是某種浮點數。

5)有些類型之間不能互相轉換。例如你定義了一個結構變數,而後要用它給整數賦值。系統容許的轉換包括:數值類型之間的轉換,整數和指針之間的轉換,指針之間的轉換。其餘轉換(無論是隱含的,還是寫出強制)都不允許。參見《C語言程序設計》(K&R)197-199頁。

如何看待編譯警告

當編譯程序發現程序中某個地方有疑問,可能有問題時就會給出一個警告信息。警告信息可能意味著程序中隱含的大錯誤,也可能確實沒有問題。對於警告的正確處理方式應該是:盡可能地消除之。對於編譯程序給出的每個警告都應該仔細分析,看看是否真的有問題。只有那些確實無問題的警告才能放下不管。

注意:經驗表明,警告常常意味著嚴重的隱含錯誤。

常見警告:

1)(局部自動)變數沒有初始化就使用。如果對局部指針變數出現這種情況,後果不堪設想。對於一般局部自動變數,沒有初始化就使用它的值也不會是有意義的。

2)在條件語句或循環語句的條件中寫了賦值。大部分情況是誤將 == (等於判斷)寫成 = 了。這是很常見的程序錯誤,有些編譯程序對這種情況提出警告。

G. 左結合和右結合的問題~和編譯原理有關

B與第一個*結合:用編譯原理的運算符的結合性來解釋的話,就是假設*是左結合的。當運算分量(本例中是B)兩側都有運算符(本例中是*)的時候,採用左結合。即B與B左邊的*結合。
eg: L —>A*B*C 先計算 A*B 然後計算(A*B)*C。
不知道你懂么??

H. java中,什麼時候需要new來實例化

(1)同一個對象在不同時刻體現出來的不同狀態。
(2)多態的前提:
A:有繼承或者實現關系。
B:有方法重寫。
C:有父類或者父介面引用指向子類對象。

多態的分類:
a:具體類多態
class Fu {}
class Zi extends Fu {}

Fu f = new Zi();
b:抽象類多態
abstract class Fu {}
class Zi extends Fu {}

Fu f = new Zi();
c:介面多態
interface Fu {}
class Zi implements Fu {}

Fu f = new Zi();
(3)多態中的成員訪問特點
A:成員變數
編譯看左邊,運行看左邊
B:構造方法
子類的構造都會默認訪問父類構造
C:成員方法
編譯看左邊,運行看右邊
D:靜態方法
編譯看左邊,運行看左邊

為什麼?
因為成員方法有重寫。
(4)多態的好處:
A:提高代碼的維護性(繼承體現)
B:提高代碼的擴展性(多態體現)
(5)多態的弊端:
父不能使用子的特有功能。

現象:
子可以當作父使用,父不能當作子使用。
(6)多態中的轉型
A:向上轉型
從子到父
B:向下轉型
從父到子

I. C語言,這三種類型都怎麼解釋

如何判斷一個指針的類型,指針指向的類型,告訴你一個簡單的方法,叫 「右左法則」,具體是這樣的,從未知的標識符看起,先看它的右邊,再看它的左邊,然後退出括弧(有的話),再看右邊,再看左邊,一直到結束就好了。
比如這個: int (*uuf)[3][4];
從uuf開始看,先看右邊,沒東西,再看左邊,是個 '*',表示uuf是個指針,然後退出括弧,看右邊,是個[][],表明uuf指向的是個數組,再看左邊,是個int ,表示數組裡面的元素是int.整體來說,就是
uuf是一個指向一個具有3行4列元素類型為int型的數組的指針。
再給舉個例子:(int (*)(int *,int))( *ptr)[3];
從ptr看,右邊,沒有,左邊是個*,表示ptr是個指針,出括弧,再看右邊,[3]表示ptr指向的是數組,再看左邊,表示數組里的元素是(int (*)(int *,int))這個類型,具體(int (*)(int *,int))這個類型是啥呢,實際就是返回值為源猛int 類型的,具有int *,int兩個參數類型慎配的函數指針。可以通過(int (*func)(int *,int))來判斷出來func的類型。

下面這幾個(1) char * fump();
(2)char (* fump)();
(3)char (* fump[3])();
通過右左法則,很容易看出來,(1)fump右邊是括弧,表明fump是個函數,左邊的char *是他的返回值類型。(2)fump右邊沒有,左邊是*,表明它是個指針,退出括弧後,右邊是(),表明指向的是一個函數,左邊char,表明函數的返回值是char類型。(3)fump右邊是個[3]表明fump是個數組,左邊 *,表示數組元素是指針,退出括弧,右邊(),表明這個指針是指向函數的,即函數指針,左邊char,表明這種函數的返回值是char.

對於指針的類型,也就是把這個未知的標識符去掉後,剩下的部分,就是指針的類型,就用上面的法則判斷就ok.對於指針指向的類型,就是把未知的標識符以及前面的*號去掉後,剩下的部分。

關於typedef,這個只不過是個某個類型,取了個名字。名字就是那個未知的標識符。比如說:
typedef int (*FuncPtr)();這個的意思,就是把int (*)()這種類型起了個名字叫FuncPtr,以後再想定義這種類型的變數的時候,就直接用 FuncPtr var;這樣 var就是一個int (*)()類型的指針了。
需要注意的是,typedef與簡單的宏展開 是不同的。
比如:
typedef int * pint ;
#define PINT int *
那麼雹孝橋:
const pint p ;//p不可更改,但p指向的內容可更改
const PINT p ;//p可更改,但是p指向的內容不可更改。
#define 是要編譯處理的,並不是簡單的替換。
const PINT P 等效預 const int * p;

J. Microsoft Visual C++ 6.0如何編譯,生成,執行

你好!

你是不是剛學VC編程

如果用過其他編譯器,這個問題就好講了。

編譯:
按Ctrl+F7快捷健,或者按工具欄上最後一組工具的第2個,即兩個藍色向下箭頭的那個圖標。

組建:
那個只有一個藍色向下箭頭的圖標,(編譯圖標左邊那個)。

執行:
按Ctrl+F5快捷健,或者按那個紅色的感嘆號。

如果你的VC6是中文的,可以看看菜單欄的「組建」菜單,裡面有相應的菜單項的。另外,組建的熱鍵為F7。

希望對你有用,謝謝!

熱點內容
醫院防汛演練方案與腳本 發布:2025-07-14 20:41:11 瀏覽:777
公網ip做域伺服器地址 發布:2025-07-14 20:40:13 瀏覽:52
php獲取幾 發布:2025-07-14 20:22:20 瀏覽:376
舊安卓如何刷入最新安卓 發布:2025-07-14 20:16:14 瀏覽:763
伺服器或網路不給力是什麼意思 發布:2025-07-14 20:15:36 瀏覽:318
爬網站資料庫 發布:2025-07-14 20:15:20 瀏覽:520
邵雍的演算法 發布:2025-07-14 20:13:49 瀏覽:119
離線燒錄加密 發布:2025-07-14 20:12:13 瀏覽:620
奧迪怎麼查配置 發布:2025-07-14 20:12:07 瀏覽:832
java視頻編程 發布:2025-07-14 19:49:22 瀏覽:524