
uj5u.com熱心網友回復:
case ' b>max': 這里的型別不對,'b>max' 是什么型別呢,不是 字符型,也不是 字串,case 后面跟整形才對。uj5u.com熱心網友回復:
供參考:#include<stdio.h>
int main()
{
int a,b,c;
printf("請輸入三個數:\n");
scanf("%d%d%d",&a,&b,&c);
printf("最大值:%d\n",a>b?(a>c?a:c):(b>c?b:c));
return 0;
}
uj5u.com熱心網友回復:
謝謝儂,嘿嘿
uj5u.com熱心網友回復:
這種說法是不正確的。
首先,case 后面必須跟整型常量運算式(而不是通常意義上的整型)。
其次,'b>max' 是字符常量,它的型別是 int 。因此,'b>max' 的型別是 int 。根據整型常量運算式的定義,'b>max' 也是整型常量運算式。
所以 case 'b>max' 在語法上是沒有問題的。
問題在哪里呢?對于單字符的字符常量,比如 'x',在編譯時轉換為 int 型別的字符編碼。但是,對于包含多個字符的字符常量,比如 'abcd',在編譯時如何打包成 int 型別的編碼,由編譯器(C實作)決定。有很多機器上,int 型別的長度是 4 個位元組,正好可以編碼4個字符,但超過4個字符就會出現警告。
來看下面這個例子,這個例子可以正常執行并列印 “Okay.”:
switch ('b>ma')
{
case 'b>ma' : printf ("Okay.\n");
}
在很多機器上,這個示例不會產生“字符太長”的警告,但有可能出現“字符常量由多個字符組成”的警告。但相對于字符太長的警告,后面一個警告是可以接受的。
uj5u.com熱心網友回復:
猜一猜,下面的程式片斷將列印什么內容?int m = 5;
switch (0)
{
m ++;
default: printf ("%d\n", m);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/284811.html
標籤:C語言
上一篇:輸出錯誤出現-9.25596e+061,不知道哪錯了
下一篇:急!!!音頻分析程式求助!!!