當前位置:編程學習大全網 - 編程語言 - C語言中請問函數名中的括號裏可以寫表達式嗎

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\n", 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

  • 上一篇:Aptx編程
  • 下一篇:foxmail.exe-應用程序錯誤,
  • copyright 2024編程學習大全網