2014-06-07 68 views
-3
#include <stdio.h> 
int main() 
{ 
    int a,b; 
    a=-3--25; 
    b=-3--(-3); 
    printf("a=%d b=%d\n",a,b); 
    return 0; 
} 

在這個程序中,所有我認爲是好的,但仍然在建設中我得到的錯誤, [|5|error: expected ';' before numeric constant|.]我不知道這個程序有什麼問題。爲什麼編譯器抱怨減去負數?

+4

中查找[ '最大適合'](http://en.wikipedia.org/wiki/Maximal_munch)規則。 –

+4

這個問題的標題不是信息恕我直言。 – user2672165

+1

@ user2672165:我相信重寫會更好。 –

回答

5

--是遞減運算符。您不能將遞減運算符應用於數字常量,因爲它更改了它應用於的內容。也就是說

--a; 

改變a值。所以--3是無效的,你不能改變一個常數。

如果你想減去一個負數,您需要減號來-和否定運算-,或()周圍的事物之間的空間被否定:

a = -3 - -25; 
b = -3 - -(-3); 

另外,注意-(-3)是囉嗦的寫法3


一般來說,空間和空行不是敵人。在操作員周圍放置空白並明智地使用空行,通常會提高可讀性。

#include<stdio.h> 

int main() 
{ 
    int a, b; 

    a = -3 - -25; 
    b = -3 - -(-3); 
    printf("a = %d, b = %d\n", a, b); 
    return 0; 
} 
0

廣場-標誌,讓編譯器之間有一些空格知道,你只需要使用一元和二元-,不遞減操作--

a= -3 - -25; 
b= -3 - -(-3); 

由於--是遞減運算符,以便a= -3--25;不是由編譯器變換爲a= -3 - -25;

相關問題