Cswitch的case是隻能基於char的 不可以基於string的

時間 2021-08-11 17:51:00

1樓:匿名使用者

c/c++的switch中case的變數要求是可計算的整數。

不能用float,double等數值型別,更不能用字串,結構體,類等複合型別。

在c/c++中,字元型是可以預設轉化為整型的,所以可以

2樓:匿名使用者

類和結構體不能用switch做分支比較

另外"q"與'q'編譯時是不同對待的,'q'就程式設計一個ascii碼的數字了,而"q"則是先在**段的一個地方放個q,然後把這個地方的地址放在case的後面。由於這個地址在編譯時是不能確定的,必須到了連結時才能確定,所以編譯器會說case後面跟的不是個常數,儘管"q"是個常字串。switch case這種語句又要求必須在case後面做常數比較,所以就會報錯了。

是的,switch和case的配合只能應用於內建型別。string型別不可以用switch

補充:按鍵是用這個switch的,但是按鍵回饋到windows訊息的時候已經轉成整數了,所以可以用switch的。

3樓:匿名使用者

"q"是字串不是字元

{char *s=”12134211”; int v1=0,v2=0,v3=0,v4=0,k; for(k=0,s[k];k++) switch(s[k])

4樓:小灬寶丶

執行結果v1=5, v2=8, v3=6, v4=1

這個程式原本的意思應該是找出字串s中字元‘1’‘2’‘3’‘4’出現的個數,但是,標準的switch case語句應該是每個case後對應會有一個break;如果沒有break,會繼續往下執行。這裡沒有寫所以執行的過程是,第一個字元‘1’時,v1++,v3++,v2++;第二個字元‘2’時,v2++;第三個字元‘1’時,v1++,v3++,v2++;第四個字元‘3’時,v3++,v2++;第五個字元‘4’時,v4++,v1++,v3++,v2++;第六個字元‘2’時,v2++;第七個字元‘1’時,v1++,v3++,v2++;第八個字元‘1’時,v1++,v3++,v2++;你算算就知道個數了。

5樓:空山自念遠

全部為8我用c執行過了,不過我也想問為什麼

c++的基礎知識。switch 和case。case後面可以接字串嗎?請詳細點講解,謝謝 20

6樓:物理公司的

switch case

只支援整數和列舉型別

//一種偽的實現方式

include

using namespace std;

enum set ;

void char2enum(char ch , set &em)void main()

{ char str;

set temp;

cout << "please input a char: ";

cin>>str; // 獲取從螢幕中輸入的字元char2enum(str, temp); // 將字元str轉換為列舉temp

switch(temp) // 根據列舉的值,進行輸出{ case a:

cout<<'a'<

C 中關於case中for迴圈的問題

這是由於vc 和標準不一致造成的,我們來考察程式中那個for語句中的i的作用域,按照標準,在for的初始化部分宣告的變數作用域應該在for中,而vc 把這個變數的作用域擴充套件到for所在的層次,就是說在for之後也是可以使用的,那麼按照去掉大括號的程式,i的作用域是從宣告之處到switch的大括號...

一道簡單的Cswitch題目,一道簡單C switch題 求解謝謝!

伊利丹s怒風 定義乙個字元型變數 x b 進入選擇條件分歧 當x a 的時候 會輸出 it s a x b 的時候 會輸出 it s b c同理switch x 相當於if x if x x 因為先前定義x b 所以進入選擇分歧後.會輸出 it s b include void main switc...

c語言中的case後不能加範圍嗎

不能加。c的語法中規定,在switch case語句中,case關鍵字後只能跟隨整型常量或enum型別。由於c年代久遠,故沒有一些年輕語言的一些語法糖,case加範圍就是其中之一 當然,加範圍的switch case語句可以用多個if else分支語句替代 int i if i 0 else if ...