-
字首自加和字尾自加不同,自加後使用字首自加,如printf("%d,%d",++d,d);這裡雖然計算時間是從右到左,但是在計算到++d的時候,計算機顯式先計算出d的值後再用,字尾self-addition使用附加的one,所以printf("%d,%d",c,c++) 在編譯結果之後,printf 函式使用乙個值 3,因為它是首先使用的,它是編譯器處理的結果。您只能首先詢問設計編譯器的人。
為什麼C是從左到右計算的)是錯誤的,而不是從左到右計算的。我不相信你可以用這個來嘗試這個,printf("%d,%d,%d,%d,%d",c,c++,c++,c++,c++)
輸出與3,3,3,3,3相同
至於編譯器,就要注意自己程式設計了。
-
第乙個結果是43,我真的不太明白。
對於第三個,實際上與編譯器有關,後面的 + 一般理解為先執行後計算,前面的 + 一般理解為先計算後執行。
但是,不建議在實際程式設計中這樣寫,因為這樣會造成理解困難。
-
簡單地說,cout read 引數是從右到左讀取的,而 printf 是從左到右讀取的。
-
主要是因為 cout 是從右到左的操作,也就是說。
第一行本來是先計算a++; 但是,如果先使用 ++ 操作,然後新增,則後乙個操作的輸出為 3
而前面的 A 實際上是 ++ 的結果;
在第二行中,同樣如此,cout<<+b “我懷疑你錯了,我呵呵,第三行輸出:第一行當然是 3,第二行是先輸出後加。
第四行的輸出,很難說,我不確定,因為我認為應該是輸出4,4。
-
第一行結果解釋如下:
int a=3;
cout,所以上面的操作是:6 6 5 5 4 4 3
結果的第三行解釋如下:
使用 printf 函式時要記住的另一件事是輸出表列中的計算順序。 不同的編譯系統不一定相同,可以從左到右或從右到左。 Turbo C 是從右到左完成的。 讓我們看一下以下兩個例子:
示例 1:main(){.}
int i=8;
printf("%d %d %d %d %d %d ",++i,--i,i++,i--,i++,i--)。
示例 2:main(){.}
int i=8;
printf("%d ",++i);
printf("%d ",--i);
printf("%d ",i++)
printf("%d ",i--)
printf("%d ",-i++)
printf("%d ",-i--)執行結果:
這兩個程式之間的區別在於它們輸出乙個 printf 語句和多個 printf 語句。 但從結果可以看出,情況有所不同。 為什麼結果不同?
這是因為 printf 函式從右到左計算輸出表中的數量。 在第乙個示例中,計算最後一項 “-i--”,得到 -8,然後 i 減去 1 後為 7。 那麼“-i++”項值為 -7,然後 i 乘以 1 後為 8。
那麼“i--”項值 8,然後 i 減去 1 到 7。 然後找到“i++”項得到 7,然後 i 將增加 1 到 8。 然後找到“--i”項,i 先減去 1 然後輸出,輸出值為 7。
最後,輸出表列中的第一項是“++i”,i 遞增 1,然後輸出 8。
但是,需要注意的是,儘管評估順序是從右到左,但輸出順序仍然是從左到右,因此結果是如上所述的輸出。
-
printf("%d\t %d\t %d\t %d\t %d\t %d\t %d", i, +i, i, +i, -i, -i++,i--)
在編譯器中。
這與下面的相同。
printf("%d\t %d\t %d\t %d\t %d\t %d\t %d", i, +i, i, +i, -i, -i, -i);請注意,-when - 的值是給臨時變數的。
i--;但是,在以下兩句話中,編譯器會在將引數值壓入堆疊後提前執行引數值。
i++;因此,這種表示式方法盡可能少地使用,它與編譯器有一定的關係,每個編譯器可能不同。
-
為什麼我和你的想法一樣,我無法解釋。
但感覺 printf 正在這樣做。
如果包括
int main()
這正是我們的想法。
-
編譯器問題... 6 6 5 5 4 -4 -5 無 C 輸出是您計算的輸出。
-
i--這種格式的優先順序比 “,”,低,所以在語句的最後一步執行,vc++ 中運算子的優先順序很重要,房東可以仔細看看書。
-
其實你不明白逗號運算子和自加規則是一樣的,逗號運算子是運算規則。
多個表示式用逗號分隔,其中用逗號分隔的表示式的值是單獨解決的,但整個表示式的值是最後乙個表示式的值。
a=1,b=2 ,c=3;這是逗號表示式 d=(a++,b,c) ; 這是你在 y=1,y+g,y++; 它根本不是逗號運算子,它只是乙個逗號表示式。
這與相隔 3 次寫作沒有什麼不同。
自加法和自減法只有在表示式中才有可能。
沒有單獨取出的命令。
單獨使用時,y++ 和 ++y 之間沒有區別,當它放在表示式中時就不同了。
int a=5;
a++;printf("%d",a);
輸出的結果是 6
int a=5;
a;printf("%d",a);
輸出仍為 6
int a=5,b;
b=++a;
printf("%d",b);
輸出的結果是 b=6 a=66
int a=5,b;
b=a++;
printf("%d",b);
輸出的結果是 b=5 a=6
事實上,自我強加的問題可以簡單地理解為:
b=a++;實際上,確實如此。
b=a;a=a+1
b=++a;實際上,確實如此。
a=a+1b=a;
當 a++ 和 ++a
不參與其他操作只是 a=a+1。
此外,僅 y++ y 就是 y=y+1,結果也沒有什麼不同。
將表示式中的“替換為 ++y”,結果與表示式中的 y= 相同,但表示式不同。
例如,y=1
-
y=1,y+5,y++;
首先,y = 1,y 等於 1。
y+5,y 的值不變,y 仍等於 1
y++,y 自加法,y 等於 2
操作順序在 = 之後。
所以你 y=1, y+5, y++; 該宣告與您的意思不一致。
-
Y 當然是 2。 逗號表示式按從左到右的順序計算。
y=1; // y=1
y+5 和 y 值無關緊要。
y++;//y=2
如果是這樣,s=( y=1,y+5,y++ 那麼 s 的值確實是 1
-
我將使用一般的程式設計思想,而不是專門的 VC++
**寫在點選等事件中,只會在點選時執行一次,變數變化不會觸發第二次點選,所以不會第二次執行;
可以考慮使用定時器觸發對變數的檢測,然後根據變數的值修改顏色,例如,每秒檢測一次變數的值,這樣每秒執行一次;
似乎沒有找到實時偵聽事件來檢測顏色變化或變數變化的好方法,因此請考慮一下,就好像文字框值更改並且會被監聽一樣。 如果有乙個像 OnColorchanged 這樣的事件(表面上)會很好,但底層實現只不過是乙個時鐘觸發器。
如果你不明白,就問吧。
-
您可以嘗試使用計時器在固定時間獲取變數的值,然後重新整理指標的狀態。 或者,如果您寫入修改後的變數的值,即您知道變數何時被修改,則傳送一條訊息以在修改變數值時重新整理指標的狀態。
-
該指標的實用性是什麼? 如果是控制項,請嘗試 updatadata(false)。 您沒有更新,因為您沒有向指示器傳送訊息以更新顏色。
-
譚浩強先生的C語言程式設計書有以下程式:
j=5;q=(++j)+(j)+(j);printf("%d",q);
結果是 Turbo C 中有 24 個(在同一本書中),VC++ 中有 22 個。
這意味著在 turbo c 中編譯時,會讀取整行,計算出 3 ++J 後計算 Q;
vc++ 首先計算前兩個 ++j(加法的第一步的加法),然後加法,然後計算第三個 ++j,然後計算 q 值。
出於測試目的,請將程式更改為:
j=5;q=0+(+j)+(j)+(j);printf("%d",q);
結果保持不變,即 vc++ 仍然是前兩個 ++j(加法的前兩個步驟的加法)。
更改為 j=5;q=j+(+j)+(j)+(j);printf("%d",q);
在 Turbo C 中,結果是 32(新增了 4 個 8),在 VC++ 中,結果是 27(6+6+7+8),然後 VC++ 處理加法的第一步。
完整的猜測如下:
Turbo C 是通過讀取整行然後計算來編譯的;
VC++ 是乙個分步計算,類似於帶有堆疊的四規則操作方法,並且前兩個變數不是預讀的。
-
計算表示式的順序,以便每個編譯器以不同的方式處理這些子表示式,因此第乙個結果是未知的。
第二個的結果很清楚,字首加得6,減字首得5,結果30。
第三個的最終結果還是自減法兩次,所以是4,但中間表示式的值也是未知的。
因此,這種型別的表示式不應該像第一種表示式那樣。
一三個這樣的,結果會莫名其妙,第二個沒有歧義 另外,虛擬機組上的產品超級便宜。
-
逗號表示式的順序是先右後左,所以在第乙個 printf 中,表示式 (a--)a--)a--)a 首先處理右 a,所以它輸出 4,然後輸出左邊 (a--)a--)a--)a---a---a-a--a-a
-
printf() 函式中的引數從右到左輸出。
printf("%d,%d",(a--)a--)a--)a);例如,先輸出 a,然後計算 (a--)a--)a--) 輸出。
-
1.在C語言中,後驗自遞增(self-decrease)是指變數的值在語句執行後是自遞增(self-reductiond)。
2. 示例如下:
int num=0, s=0;
while(num++<3)
執行第乙個 while 時,num=0,執行第乙個 while 後,num=1,在本例中為 s=0+1=1
第二次執行 while 時,num=1,第二次執行 while 後,num=2,在本例中,s=1+2=3
當 while 第三次執行時,num=2,在 while 第三次執行後,num=3,在本例中,s=3+3=6
在第 4 次執行 while 時,迴圈被推出,因為 num=4>3,最後 s=6
問題的原因在於字串的ANSI和Unicode編碼不同,VC6和VS2003預設使用ANSI編碼,而VS2005預設使用Unicode >>>More
沒有發揮,EK只保證在裂隙燈檢查下不會被發現,但是因為雷射切割範圍不是很大,一般只是乙個直徑的圓形區域,雖然比平時的瞳孔尺寸大,但不會影響光的會聚,但是一旦瞳孔放大,瞳孔大小就遠遠大於手術切割範圍。 當瞳孔放大時,視網膜將無法準確聚光(你的視覺感知會是嚴重的眩光,即光源附近有很多帶刺的“光刺”,讓你根本看不見)。 就算你不說你的感受,醫生也不需要太多經驗來檢查你的眼睛,拿乙個小光源,尋找你的眼睛,觀察光在眼底視網膜上的會聚情況,因為手術區域狹窄,視網膜上會出現兩個焦距不同的斑點, 它們不能同時收斂。 >>>More