#和##運算子
#:構串操作符
構串操作符#只能修飾帶引數的巨集的形參,它將實參的字串行(而不是實參代表的值)轉換成字串常量
#define
string(x) #x
#x#x
#define text(x) "class"
#x"info"
//巨集引用:
int abc =
100;
string(abc);
text(abc);
//替換結果:
abcabcabc
classabcinfo
##:合併操作符
合併操作符##將出現在其左右的字串行合併成乙個新的識別符號
注意:
使用合併操作符##時,自身的識別符號必須預先有定義,否則編譯器會報「識別符號未定義」的編譯錯誤。
字串行合併成新的識別符號不是字串。
#define class_name(name) class##name
#define merge(x,y) x##y##x
//巨集引用:
class_name(timer)
merge(me,to)
//替換結果:
classtimer
metome
C 中 運算子 和 運算子
運算子定義在將可空型別分配給非可空型別時返回的預設值。int?c null 若 c 為 null,則 d 為 1,否則把 c 值賦予 d int d c 1 型別名稱後加問號,如 int?i null double?d null bool?b null 可指定可為 null 的 int double...
C 中的is和as運算子
is運算子 有些型別之間的轉換並不是能夠轉換成功,強制的轉換反而會丟擲一些異常,那麼,可以使用is運算子來檢查轉換是否可以轉換成功。is的語法如下 variable is newtype 如果variable可以通過引用轉換 裝箱轉換和拆箱轉換的方式轉換為newtype,那麼運算子返回true。舉例...
C 中的 和 運算子
1.如果左運算元的值不為 null,則 null 合併運算子 返回該值 否則,它會計算右運算元並返回其結果。如果左運算元的計算結果為非 null,則 運算子不會計算其右運算元。2.c 8.0 及更高版本中可使用空合併賦值運算子 該運算子僅在左側運算元的求值結果為 null 時,才將其右側運算元的值賦...