2012-06-23 54 views
-2

我開始探索紅寶石的基金會,它是C,單引號的行爲與Ruby相同嗎?

printf('%%\\'); 

難道上面的代碼允許使用C?

+0

當您嘗試此操作時會發生什麼? – Levon

+0

順便說一句,這很容易嘗試。像ideone.com和codepad.org這樣的站點可以讓你輸入和(嘗試)用C和其他幾十種語言編譯程序。 –

+0

僅供參考「Ruby的基金會,它是C」不是英語,並且離英語太遠以找出它的含義。 「上面的代碼是否允許在C中?」是可以理解的,但應該是「是代碼......」。 ......第二個想法,我想你是說C是Ruby的基礎,但那不是真的......或者說是非常遙遠的真實。 –

回答

0

不,代碼是不允許的。

在Ruby中,單引號用於編寫字符串文字,即字符串類型的值。在C '%%\\'中有int類型。由於printf需要一個字符串(char*)作爲其第一個參數,因此'%%\\'不是printf的有效第一個參數。

+0

'%% \\'的含義是實現定義的。 –

+0

所以fancinating,現在我知道單引號只適用於單個字符'a',因爲在C'%% \\'中有類型爲int的部分,它仍然相當不錯。如何檢查'%% //'的數據類型,有沒有像'%% //'。class或'%% //'類型的任何方式? – mko

+0

@yozloy沒有辦法在運行時檢查類型,但是如果你真的試圖執行'printf('bla')',你會得到一個警告,告訴你你提供了一個整數給一個函數, 。所以這就是你如何知道'bla'是一個整數(或者閱讀標準或關於C-C的書/教程並不是真正用於通過實驗來學習的)。 – sepp2k

2
#include <stdio.h> 

int main(void) { 
     printf('%%\\'); 
     return 0; 
} 

6行。請下次試試。 它會產生運行時錯誤。

所以不,不允許。你真的不得不問這個嗎?

如果您不想在本地執行/沒有手頭的編譯器/其他原因,我建議ideone和鍵盤快速測試。

編輯:

看到對方的回答,我覺得我應該指出,

#include <stdio.h> 

int main(void) { 
     printf("%d", '%%\\'); 
     return 0; 
} 

是完全正常的,並打印2434396. 我只是不希望你能想法,單引號是非法的。

+1

它可以用* your *編譯器打印,但'%% \\'的含義是實現定義的。 –

+0

許多事情和命名每個問題的實現之間的差異,特別是對於這樣的入門級問題,這是非常關鍵的,除非它不會產生OP的相同結果。我想我應該提到它,但是,對不起。 –

+3

沒有「很多,很多東西」是實現定義的,但是多字符常量是,而且是的,應該提及這樣的事情,以便人們在得到相同結果時不會感到困惑。請記住,SO問題不僅僅針對提出問題的人,而是針對每個人。 –

相關問題