2010-03-23 29 views
5

這些問題是一種遊戲,我沒有找到解決方案。
可以用C++編寫:::而不用引號或類似的東西,編譯器會接受它(宏也被禁止)。如何在C++中合法編寫:::?在C#中?

對於C#也是如此,但在C#中,您必須編寫???

我認爲C++將使用範圍操作符::,C#將使用? :,但我不知道它們的答案。

任何想法?

+13

什麼山山 – 2010-03-23 21:01:31

+6

我猜這是一個家庭作業問題,通過一個詞攪拌器。 – 2010-03-23 21:04:03

+0

這些問題在演講開始時給我們說:「如果有人已經知道這個話題,他們可以在這個問題上工作:) :) – nbitd 2010-03-23 21:07:07

回答

4

你可以寫在C#中連續三個問號沒有引號,但並非沒有空格,使用空合併運算符和可空別名字符:

object x = 0; 
int y = x as int? ?? 1; 
0
I think C# will use ? : 

你的意思是在同一條線上使用三個問號?

var a = true ? new Nullable<int>(1) ?? 1 : 0; 

編輯:據我所知,這是不可能在C#中的任何版本編寫???

1

有空白,很容易:

C++

class A{}; 
class B : :: A{}; 

int foo; 

int bar(){ 
    return decision ? -1 : :: foo; 
} 

但沒有空格,這些將不會編譯(編譯器看到:: :,這沒有任何意義)。

同樣,Aaronaught給了? ??一個很好的例子,在C#中,但沒有空格,編譯器將其視爲?? ?,這將無法編譯。

+0

你有沒有參考C#編譯器見'???'爲'?? ?'?它讓更多的場景讓編譯器根本看不到*它。 – 2010-03-24 02:53:38

+0

@Mendy:如果沒有空格('???'),編譯器會給出兩個錯誤:位於第三個問號處的「無效表達式」?和位於其後面的「; expected」。如果你放置一個空間,這樣它就是'?? ?',你在相同的[相對]位置得到相同的兩個錯誤。它基本上是user168715在對原始問題的評論中提到的「最大munge」主體。 – 2010-03-24 03:44:54