Ⅰ c語言中中括弧用什麼表示啊
你的意思可能是,比如數學里有個表達式:
{[(1+2)*2+3]+5}*5,那麼()叫小括弧、【】叫做中括弧、{
}叫大括弧,對吧?
C語言中是沒有中括弧這種說法,全部都只用()小括弧表示,比如要把上面那個數學表達式表示成C語言的表達式時,只需把所有的中括弧和大括弧換成小括弧:((
(1+2)*2+3
)+
5
)*5.
程序執行的時候從最裡面的小括弧開始執行,一個個向外。
Ⅱ 在C語言中,if括弧後面的語句可以是表達式嗎
可以是表達式!
2*2==5<2*2==4
中,<優先順序別比==要高。
因而實際上那個表達式與下列等同:
2*2==(5<2*2)==4
於是,你先比較4 == 0,然後把結果(0)再與4比啟塵中較。0==4,因為不相等,所以悄山表達式最終結果為0
故而輸出F
你可以這樣試試!
就會知道優先順序別和怎麼發生的啦!
printf("%d\n",2*2==5);
printf("%d\n",2*2==5<2*2);
printf("%d\n",(2*2==5)<2*2);
printf("%d\n",2*2==(5<2*2)==4);
if( 2*2==5<2*2==4 ){
printf("%d\n",2*2==5<2*2==4);
printf("兄銀T");
}
else{
printf("%d\n",2*2==5<2*2==4);
printf("F");
}
Ⅲ C語言中括弧運算符的問題
哈哈,你這是一個逗號表達式。
它將以逗號為界,從左到右依次計算每個表達式的值,最後返回最右邊的表達式的值。
阿明白??
Ⅳ C語言if後面的括弧里的表達式是不是一定產生邏輯值
是的,不管是什麼類型的表達式,其值均視為邏輯值.
Ⅳ C語言中switch()語句的括弧內可以是什麼類型的呢
switch()語句的括弧內的表達式必須是整型,它要與case 里的值呼應。
Switch用在編程中,如C語言中它經常跟Case一起使用,是一個判斷選擇代碼。其功能就是控制流程流轉的。
直線翻譯:switch語句,即「切換」語句;case即「情況」。
switch語句的語法如下(switch,case,break和default是關鍵字):
switch ( 變數表達式 )
{
case 常量1 :語句;break;
case 常量2 :語句;break;
case 常量3 :語句;break;
...
case 常量n:語句;break;
default :語句;break;
}
(5)c語言中括弧裡面的表達式擴展閱讀:
遵守switch語句規則
switch語句非常有用,但在使用時必須謹慎。所寫的任何switch語句都必須遵循以下規則:
只能針對基本數據類型中的整型類型使用switch,這些類型包括int、char等。對於其他類型,則必須使用if語句。
switch()的參數類型不能為實型 。case標簽必須是常量表達式(constantExpression),如42或者'4'。case標簽必須是惟一性的表達式;也就是說,不允許兩個case具有相同的值。
Ⅵ C語言中請問函數名中的括弧里可以寫表達式嗎
這是逗號表達式,沒有括弧培孝表達式。。
((b=(2,3),b+2),15+b)
從左往右一次執行語句,以逗號作為分界,最後返回最後一個語句的值
所以
b=3
最後返核返回改中飢15+b
=18
b=18
b=b+b
=36
b+=b-=((b=(2,3),b+2),15+b)
賦值且運算是右結合
b=3
b-=18
b=-15
b+=b
b=-30
Ⅶ c和c++的括弧表達式到底有什麼區別
在滾凳C語言姿鄭中,括弧表達式的結果只能作為跡備頌右值,而在C++中,括弧表達式可以作為右值。
比如:
int a;
(a) = 10;
這在C++中是合法的,但是在C中是非法的。
類似的還有前++前--表達式。
Ⅷ c語言中的括弧表達式
括弧表達式計算順序是從左到右,然後整個表達式返回的是最右邊表達式的值,如第一個表達式,先算最內層的括弧表達式的最左邊的值,再把其最右邊的值返回並賦值給b,所以b在此次運算之後變為3,之後b+2=5(但5隻是一個臨時值,b值還是3),之後15+b=18,並且這個值由於是最右的表達式會作為整個大括弧表達式的返回值,即b再一次被賦值為18,然後現計算b+=18得到36;
如此第二個就是-30吧,對了,賦值表達式是從右到左賦值的
Ⅸ c語言數組名後面那個中括弧[ ]里可不可以是表達式為什麼
可以,但是要注意一點,
這個表達式返回值一定要是正整數或者零
其他的都是錯誤宏敏滲的
給你舉個例子吧
如求一個數蔽脊字字元串中數字出現的頻率
char
a[100];
int
b[10]={0};//計數數字出現的次數
int
i=0;
gets(a);
//拿彎輸入數字,否則有可能出錯,因為b的下標超過9
while(a[i])
b[a[i++]-'0']++;
//這里a和b的下標都是表達式
a的下標是i++,是正整數或零
b的下標是a[i++]-'0'是a[i]中的數字的ascii碼值減去0的ascii碼值,是0~9
Ⅹ C語言中請問函數名中的括弧里可以寫表達式嗎
C語言中請問函數名中的括弧里可以寫表達式嗎
調用函數時,參數部分,可以使用表達式
定義函數時,不可以寫表達式
c語言中可否用中文寫函數名
不可以,為什麼要用中文呢?
C語言中的算數表達式
答案是2.500000。那個int(x+y)強制類型轉換成整型,結果是7;前面a%3求余為1,即1*7%2/4;7與2求余是1,與4整除為0;則答案是x的值。 程序如下
#include<stdio.h>
int main()
{
float x=2.5;
i nt a=7;
float sum;
float y=4.7;
sum = x+a%3*(int)(x+y)%2/4;
printf("%f
", sum);
return 0;
}
怎麼理解C語言中函數:switch(表達式)case break;
就是一個判斷語句 switch(A) 判斷A case 1:...; 如果A等於1 則做一些操作,然後break跳出,不進行判斷 ,如果沒有break;他會繼續判斷是否等於2的; break; case 2:...; .. default: ...; 這里 如果不等於1也不等於2,就執行default裡面的語句;最後跳出循環
麻煩採納,謝謝!
關於c語言中的數學表達式
簡單的話可以使用pow(a,1.0/n),需加頭文件 #include<math.h>
a為被開方數,n為開方數
注意是1.0,不是1
1/n不等於1.0/n的(n是整型數據)
當然也可以自己寫個函數,計算一下
函數調用是表達式的一種嗎在c語言中
c語言中,函數調用是函數調用,表達式是表達式。兩個概念。
在某些語言中(如:lisp),函數調用就是表達式。C語言不是這樣的。
c語言,return(),括弧里可以是表達式,數值,函數地址還有什麼呢? 或者說 括弧里不能是什麼呢?
說點誇張的,你想讓它返回什麼,它就能返回什麼,當然,你想讓它,把你返回了,它是不能哈~~~
c 中,return 可以返回,任何是值(value)的東西,
return 1; return 1 + 2; return "abc";
實際上,return 也可以什麼都不返回,
return ; 表示,函數到此結束,控制權已經交給了調用它的人賣攜了,後面的代碼,無視~~
因為吧,c 中有指針類型一說,而指針是無所不指的,可以指向char, int , double ,
可以指向指針*,可以指向數組int[12],可以指向函數, 指向結構體,等等、
而指針本來就是一種類型,一個值(value),所以說,只要你懂,return 什麼東西都能返回,
補充一句,他不能返回,非值的東西(value),比如
return +; 這什麼東東??返回運算符?、god、、你會這樣嗎?、
C語言中的函數名字該怎麼讀?
一般取名都是單詞省略後得到函數名,也有的人用拼音命名,怎麼讀並不重要,關鍵是明白函數是干什麼的.你可以參考一下匈牙利命名法
在C語言中有那些函數名?
僅僅為了獲取函數名,就在函數體中嵌入硬編碼的字元串,這種方法單調乏味還易導致錯誤,不如看一下怎樣使用新的C99特性,在程序運行時獲取函數名吧.對象反射庫、調試工具及代碼分析器,經常會需要在運行時訪問函蔽豎數的名稱,直到不久前,唯一能完成此項任務並且可移植的方法,是手工在函數體內嵌入一個帶有該函數名的硬編碼字元串,不必說,這種方法非常單調無奇,並且容易導致錯誤。本文將要演示怎樣使用新的C99特性,在運行時獲取函數名。
那麼怎樣以編程的方式從當前運行的函數中得到函數名呢?
答案是:使用__FUNCTION__ 及相關宏。
引出問題
通常,在調試中最讓人心煩的階段,是不斷地檢查是否已調用了特定的函數。對此問題的解決方法,一般是添加一個cout或printf()——如果你使用C語言,如下所示:中並伏
void myfunc()
{
cout<<"myfunc()"<<endl;
其他代碼
}
通常在一個典型的工程中,會包含有數千個函數,要在每個函數中都加入一條這樣的輸出語句,無疑難過上「蜀山」啊,因此,需要有一種機制,可以自動地完成這項操作。
獲取函數名
作為一個C++程序員,可能經常遇到 __TIME__、__FILE__、__DATE__ 這樣的宏,它們會在編譯時,分別轉換為包含編譯時間、處理的轉換單元名稱及當前時間的字元串。
在最新的ISO C標准中,如大家所知的C99,加入了另一個有用的、類似宏的表達式__func__,其會報告未修飾過的(也就是未裁剪過的)、正在被訪問的函數名。請注意,__func__不是一個宏,因為預處理器對此函數一無所知;相反,它是作為一個隱式聲明的常量字元數組實現的:
static const char __func__[] = "function-name";
在function-name處,為實際的函數名。為激活此特性,某些編譯器需要使用特定的編譯標志,請查看相應的編譯器文檔,以獲取具體的資料。
有了它,我們可免去大多數通過手工修改,來顯示函數名的苦差事,以上的例子可如下所示進行重寫:
void myfunc()
{
cout<<"__FUNCTION__"<<endl;
}
官方C99標准為此目的定義的__func__標識符,確實值得大家關注,然而,ISO C++卻不完全支持所有的C99擴展,因此,大多數的編譯器提供商都使用 __FUNCTION__ 取而代之,而 __FUNCTION__ 通常是一個定義為 __func__ 的宏,之所以使用這個名字,是因為它已受到了大多數的廣泛支持。
在Visual Studio 2005中,默認情況下,此特性是激活的,但不能與/EP和/P編譯選項同時使用。請注意在IDE環境中,不能識別__func__ ,而要用__FUNCTION__ 代替。
Comeau的用戶也應使用 __FUNCTION__ ,而不是 __func__ 。
C++ BuilderX的用戶則應使用稍稍不同的名字:__FUNC__ 。
GCC 3.0及更高的版本同時支持 __func__ 和__FUNCTION__ 。
一旦可自動獲取當前函數名,你可以定義一個如下所示顯示任何函數名的函數:
void show_name(const char * name)
{
cout<<name<<endl;
}
void myfunc()
{
show_name(__FUNCTION__); 輸出:myfunc
}
void foo()
{
show_name(__FUNCTION__); 輸出:foo
}
因為 __FUNCTION__ 會在函數大括弧開始之後就立即初始化,所以,foo()及myfunc()函數可在參數列表中安全地使用它,而不用擔心重載。
簽名與修飾名
__FUNCTION__ 特性最初是為C語言設計的,然而,C++程序員也會經常需要有關他們函數的額外信息,在Visual Studio 2005中,還支持另外兩種非標準的擴展特性:__FUNCDNAME__ 與 __FUNCSIG__ ,其分別轉譯為一個函數的修飾名與簽名。函數的修飾名非常有用,例如,在你想要檢查兩個編譯器是否共享同樣的ABI時,就可派得上用場,另外,它還能幫助你破解那些含義模糊的鏈接錯誤,甚至還可用它從一個DLL中調用另一個用C++鏈接的函數。在下例中,show_name()報告了函數的修飾名:
void myfunc()
{
show_name(__FUNCDNAME__); 輸出:?myfunc@@YAXXZ
}
一個函數的簽名由函數名、參數列表、返回類型、內含的命名空間組成。如果它是一個成員函數,它的類名和const/volatile限定符也將是簽名的一部分。以下的代碼演示了一個獨立的函數與一個const成員函數簽名間的不同之處,兩個函數的名稱、返回類型、參數完全相同:
void myfunc()
{
show_name(__FUNCSIG__); void __cdecl myfunc(void)
}
struct S
{
void myfunc() const
{
show_name(__FUNCSIG__); void __thiscall S::myfunc(void) const
}
};
C語言中!x的等價表達式
x==0