麻煩C語言高手解釋意思define ISOPT a,babbdefine NOTOPT a,bab

2022-06-03 08:45:16 字數 2511 閱讀 4185

1樓:♂凡鳥

#include

using namespace std;

#define isopt(a,b) (((a) & (b)) == (b)) //用巨集定義一個函式isopt(a,b) 函式,對a,b進行按位與運算,判斷結果是否等於b(即a在b值二進位制為1的相應各位上都為1

),等於返回真否則返回假

#define notopt(a,b) (((a) & (b)) == 0) //用巨集定義一個函式notopt(a,b) 函式,對a,b進行按位與運算,判斷結果是否等於0(即a在b值二進位制為1的相應各位上都為1

),等於返回真否則返回假

int main()

2樓:匿名使用者

#define isopt(a,b) (((a) & (b)) == (b)) //位測試巨集定義,該巨集定義意思應該是全匹配測試

#define notopt(a,b) (((a) & (b)) == 0 //位測試巨集定義,該巨集定義意思應該是全反匹配測試

isopt -》b為基準,a在b值二進位制為1的各位上都為1notopt-> b為基準, a在b值二進位制為1的各位上都為0

3樓:小馬

這兩個都是判斷語句的巨集

第一個 #define isopt(a,b) (((a) & (b)) == (b))是判斷a&b是否和b相等,第二個是判斷a&b是否為零,用的時候可以這樣寫

if(isopt(x,y))

c語言 #definemax(a,b)(a>b)? a : b 這句什麼意思?特別是?a:b

4樓:文化廚子

1、#是預處理的前導符。

2、#define是巨集定義,這是一個巨集定義函式。

3、「? :」是條件回運算子條答

件運算子的一般使用格式如下:

表示式1 ? 表示式2 : 表示式3

舉例如下:

max = (a>b) ? a : b; // 取變數a, b中較大的一個,並賦值給變數max

4、整句的意思就是定義一個max的巨集函式,來判斷兩個值的大小。問題中的**相用c語言描述偽**描述為:

int a, b , tmp;

if (a > b) tmp =a;

else tmp = b;

因為c語言中沒有c++中的模板概念,所以用巨集的方式來實現不同資料型別的相同操作。

5樓:藍風停

#define max(a,b) (a>b)? a : b當寫max(a,b)的時候,就是執行(a>b)? a : b,相當於一個別名

(a>b)? a : b; 如果(a>b)成立為真,使用內a; 如果(a>b)不成立為假,使用b;

就是判斷

容a,b大小的意思

6樓:匿名使用者

你好:#definemax(a,b) //巨集定義(a>b)? a : b //三目運算子等價於小型的if{}else{}語句

//舉例:(10>5)?4:5

a>b  true

a

7樓:匿名使用者

? : 這是一個運算子,是一個整體,叫條件運算子,作用類似於if else 語句

max=(a>b)?a:b;

等效於if(a>b)

else

8樓:匿名使用者

定義 max(a,b)為(a>b)? a : b

,判斷a>b,如果成立取值a,如果不成立取值為b

9樓:手機使用者

如果a>b,那麼最大值就是a,否則是b

c語言巨集定義**現的##是什麼意思 如define max(a,b) a##b

10樓:匿名使用者

預處理運算子# #為巨集擴充套件提供了一種連線實際變元的手段。如果替換文字中的引數用 # #相

連,那麼引數就被實際變元替換, # #與前後的空白符被刪除,並對替換後的結果重新掃描。例

如,下面定義的巨集p a s t e用於連線兩個變元:

#define paste( front, back ) front ## back

從而巨集呼叫paste(name, 1)的結果是建立單詞n a m e 1。

11樓:

#define paste( front, back ) front ## back

c語言巨集定義#define max(a,b) a>b?a:b 有什麼隱患?

12樓:匿名使用者

因為巨集定義是在預編譯階段把巨集的內容拷貝的源**的相應位置如果#define max(a,b) a>b?a:b這樣寫的話那麼如下表示式 max(a,b)+1就為

a>b?a:b+1

冒號後面就是b+1了,自然和lz的當初願望,算完max再加一違背了所以要加上括號。

求c語言高手解釋形參sqlistlsqlistl的區別

這個定義應該是c 裡面的引用的定義。因為c裡面 只是一個取地址的符號。而且c裡面不會在生命的時候去去一個變數的地址 sqlist l 是宣告一個指標 sqlist l 是宣告一個引用 指標與引用的區別在於 1 引用總是指向一個物件,沒有所謂的 null reference 所有當有可能指向一個物件也...

c語言題目求詳細解釋,C語言題目,求詳細解釋

在c語言裡,結構體在記憶體中存放時要遵從這樣的規則 1 每個成員的相對於整個結構體起始地址的偏移值必須是該成員長度的整數倍 2 整個結構體的長度必須是最長的元素的整數倍 現在看整體是24,是最長元素8的倍數 符合規則2 於是長度就是24 就是選項d 如果換個次序變成下面這樣,就是32個位元組了 因為...

求解釋C語言

是用於作資料型別的強制轉換,把 float 後面的變數轉換為浮點型別。100 float num stu這個語句的目的是算出不及格學生的百分比。打個比方,學生總人數是10人,stu 10,而不及格人數是5人,num 5.如果不做型別轉換,寫成num stu,因為num和stu都是int整形變數,兩者...