c語言operator
⑴ 急急急急急急!!!!c語言中operator是什麼意思
operator 就是運算符啊,對啊包括加減乘除在內,但遠遠不止這些哦,包括什麼單目運算符,雙目運算符,三目運算符三種,按類型說還有什麼位運算符,邏輯運算符啊等等等等。不過常規意義上來說,如果你做一個程序讓人輸入一個operater,那麼對方一般默認是加減乘除這幾個(我指簡單程序啊)。
至於你說的ch,
Ch是一個跨平台的C/C++腳本解釋器,它支持ISO的C語言標准(C90/C99)和C++類庫,附帶了8000多個函數庫並支持眾多的工業標准,支持POSIX, socket/Winsock, X11/Motif, OpenGL, ODBC, C LAPACK, GTK+, Win32, XML, 和CGI等等。Ch具有MATLAB的高級數值計算和繪圖的功能,且具有良好的交互性,在C/C++語言編程學習方面尤為好用。Ch也是一個可嵌入的腳本引擎,可以無縫地嵌入到已編譯的程序中。
利用Ch,C/C++程序無需編譯就可以直接在多平台上運行。它實現了一種語言、到處運行的解決方案(One Language for All™)。
⑵ C語言常用詞彙及函數有那些
常用詞彙:
1、short:修飾int,短整型數據,可省略被修飾的int。
2、long:修飾int,長整型數據,可省略被修飾的int。
3、long long:修飾int,超長整型數據,可省略被修飾的int。
4、signed:修飾整型數據,有符號數據類型。
5、unsigned:修飾整型數據,無符號數據類型。
6、restrict:用於限定和約束指針,並表明指針是訪問一個數據對象的唯一且初始的方式。
7、return:用在函數體中,返回特定值(如果是void類型,則不返回函數值)。
8、continue:結束當前循環,開始下一輪循環。
9、break:跳出當前循環或switch結構。
10、goto:無條件跳轉語句。
11、if:條件語句,後面不需要放分號。
12、else:條件語句否定分支(與if連用)。
13、switch:開關語句(多重分支語句)。
14、case:開關語句中的分支標記,與switch連用。
15、default:開關語句中的「其他」分支,可選。
常用函數:
1、int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z'),返回非0值,否則返回0。
2、int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或數字('0'-'9'),返回非0值,否則返回0。
3、int abs(int i) 返回整型參數i的絕對值。
4、double cabs(struct complex znum) 返回復數znum的絕對值。
5、double fabs(double x) 返回雙精度參數x的絕對值。
6、long labs(long n) 返回長整型參數n的絕對值。
⑶ c語言的問題
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define EPS 1e-8
#define DIN double
#define MAX 10
long nCount;
char strs[12],coperator[4][3]=; //定義一個保存運算符的數組coperator,它的第一行是運算符
//個人感覺這個數組好像建的有問題,後兩行貌似沒賦值
DIN ans(int iop,DIN x,DIN y) //四則運算
{
switch(iop)
{
case 1 : return x+y;
case 2 : return x-y;
case 3 : return x*y;
case 4 : if(y)if(sizeof(DIN)==sizeof(int)&&(int)x%(int)y==0 //若除數不為零,則進行除運算
||sizeof(DIN)==sizeof(double))return x/y;
default: return -1;
}
}
int ok2(DIN x,DIN y) //用循環調用 ans()函數 找結果
{
int ix;
for(ix=1; ix<=4; ix++)
if(fabs(ans(ix,x,y)-24)<EPS)return(ix); //這句是如果除運算出現無限小數,則若結果在24(加減)10的負8次方內,符合要求
return(0);
}
int ok3(DIN a,DIN b,DIN c)
{
int i,j,k; DIN x[3];
x[0]=a; x[1]=b; x[2]=c;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
if(j!=i)
for(k=0; k<3; k++)
if(k!=i && k!=j) //確保不重復用數
{
int ix,imid; DIN y;
for(ix=1; ix<=4; ix++)
{
y=ans(ix,x[i],x[j]);
if(y<=0)continue; //兩個數的運算結果要大於零(這點我也不知道是干什麼的...)
if((imid=ok2(y,x[k]))!=0) //接收滿足條件的結果並進行下一步運算
{ //這是帶括弧的情況
if(i==0)printf("(%s%s%d)%s%d\n",strs,coperator[ix-1],
(int)x[j],coperator[imid-1],(int)x[k]);
else if(j==0)printf("(%d%s%s)%s%d\n",(int)x[i],\
coperator[ix-1],strs,coperator[imid-1],(int)x[k]);
else if(k==0)printf("(%d%s%d)%s%s\n",(int)x[i],
coperator[ix-1],(int)x[j],coperator[imid-1],strs);
nCount++; //計滿足的結果個數
}
}
} return(0);
}
int point24(int p[4])
{
int a,b,c,d,i,ix; DIN y;
for(a=0; a<4; a++)
for(b=0; b<4; b++)
if(b!=a)
for(c=0; c<4; c++)
if(c!=a && c!=b)
for(d=0; d<4; d++)
if(d!=a && d!=b && d!=c) //四個不重復的數
for(ix=1; ix<=4; ix++) //將四個數轉換成字元數組然後調用
{ //我字元串操作不太在行,這點沒能看明白 -_-
y=ans(ix,p[a],p[b]); if(y<=0)continue;
strs[0]='('; itoa(p[a],&strs[1],10);
strcat(strs,coperator[ix-1]); i=strlen(strs);
itoa(p[b], &strs[i],10); i=strlen(strs);
strs[i]=')'; strs[i+1]=0;
if(ok3(y,p[c],p[d]))return(1);
}
return(0);
}//itoa(p[a],&strs[1],10)將p[a]的值按10進制轉換成字元串存入&strs[1]
void main( )
{
int p[4]; printf("輸入四個整數(0-10)(a,b,c,d): ");nCount=0;
scanf("%d,%d,%d,%d",p,p+1,p+2,p+3);
point24(p);
printf("結果總數 = %d\n",nCount);
}
這個程序分行的時候分的不好,邏輯看起來比較混亂,建議自己重分一下行,那樣會比較容易看懂
⑷ "operator"在C語言里是什麼關鍵字,具體什麼功用
1.operator是操作符的意思。operator是C++的關鍵字,不是C語言當中的,它和運算符一起使用,表示一個運算符函數,理解時應將operator=整體上視為一個函數名。
2.C++中的operator,有兩種用法,一種是operator overloading(操作符重載),一種是operator casting(操作隱式轉換)。下面分別進行介紹:
1)operator overloading
C++可能通過operator 重載操作符,格式如下:類型T operator 操作符 (),例如重載 +:
template<typename T> class A
{
public:
const T operator + (const T& rhs)
{
return this->m_ + rhs;
}
private:
T m_;
};
又比如STL中的函數對象,重載 ():
template<typename T> struct A
{
T operator()(const T& lhs, const T& rhs){ return lhs-rhs;}
};
2)operator casting
C++可能通過operator 重載隱式轉換,格式如下: operator 類型T (),如下所示
class A
{
public:
operator B* () { return this->b_;}
operator const B* () {return this->b_;}
operator B& () {return *this->b_;}
private:
B* b_;
};
A a;
當if(a),編譯時,其中它轉換成if(a.operator B*()),其實也就是判斷 if(a.b_)
⑸ C語言取模運算符(molus operator)「%」的作用是什麼
取模運算,又稱求余運算或者模除運算。它的作用是其運算符為%,形式為a%b,其中a和b都是整數。計算規則為,計算a除以b,得到的余數就是取模的結果。
如100%17 ,100 = 17*5+15。是100%17 = 15。2÷3 = 0 …… 2。即2 = 3*0+2。於是 2%3=2。這里有一個規律,如果b>a>0,那麼a%b=a。
對這個數沒影響的,但是分清下面兩種情況如下
1、a = 1,a%2;
這樣的話a的值是不會變,而a%2的值是保存在另外一個臨時寄存器裡面的。
2、a = 1,a = a%2;(也可以寫成a %= 2;)
這樣的話a的值是會變的,因為a%2的值已經賦給a了(=的作用為賦值).所以a的值就是a%2的結果。
(5)c語言operator擴展閱讀
賦值運算符
在C語言中,賦值運算符的符號是"="。在小學的數學中"="表示等於,但在C語言中代表賦值。
舉個例子:
int i=0;
標識將0賦值給i這個變數。
相關術語:
數據對象:用來表示數據存儲區的術語。
左值:用來標識一個特定的數據對象的名字或表達式,通常是可以改變值的對象。
右值:能賦給可修改的左值的對象。
操作數:就是運算符操作的對象。
⑹ C++語言中 operator<<()怎麼用
先舉個簡單例子吧 然後進行說明 寫個簡單的類 然後重載<<運算符class Data
{
public:
int x;
int y; friend ostream &operator<<(ostream &os,Data &d)
{
os<<"d.x = "<<d.x<<endl;
os<<"d.y = "<<d.y<<endl;
return os;
}
};重載<<的作用是:用於Data類的對象不是基本類型,我們不能直接cout<<a(a為Data類的一個對象); 編譯器不知道該這么處理這個對象.但是我們重載了<<,這就提供了一個准則當cout的是Data的對象,就會自動去運用對應於Data對象的<<方式. 當我們cout<<a;的時候,就是把"cout"和"a"作為參數 傳給了重載的<<,上面的那個函數體裡面,所有的os被形參cout代替,所有的d被被a代替,這個函數里的內容其實就是根據自己的需要寫出的一種格式,怎麼寫都行.最後return os;即 返回一個對象的引用,這樣做的目的是使重載後的<<能夠連續使用.比如cout<<a<<b<<c;(a,b,c都是Data的對象)如果不return也是沒問題的 但就不能上面那樣寫了 只能分別寫cout<<a;cout<<b;cout<<c;了
⑺ c語言中運算符有哪幾種,優先順序順序是怎樣
C語言中,運算符除了常見的三大類,算術運算符、關系運算符與邏輯運算符之外,還有一些用於完成特殊任務的運算符。
運算符的運算優先順序共分為15 級,1 級最高,15 級最低。 在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。
一級運算符:標識,常量,字元串文字量,優先順序提升表達式最優先執行。
二級運算符:數組下標運算(expression)、函數調用(argument-expression-list)、成員訪問(identifier、-> identifier)、後綴自增(i++)、後綴自減(i--)、復合初始化(initializer-list)。
三級運算符:前綴自增(++i)、前綴自減(--i)、單目轉型表式式(取地址& ,提領 * , 正號+ ,負號-、位反~ 邏輯否!)、求類型長度(sizeof unary-expression)。
四級運算符:強製表達式成為type-name指定的類型( type-name ) cast-expression。
五級運算符:「 * 」 乘法運算符。
六級運算符:「 + 」加法運算符。
七級運算符:<< 左移運算符;>> 右移運算符。
八級運算符:<、<=、>、>=關系運算符。
九級運算符:「 == 」等於運算符;「 != 」不等於運算符。
十級運算符:「 & 」按位與運算符。
十一級運算符:「 ∧ 」按位異或運算符。
十二級運算符:「 | 」按位或運算符。
十三級運算符:「&&」邏輯與運算符。
十四級運算符:「 || 」邏輯或運算符。
十五級運算符:? :條件運算符。
(7)c語言operator擴展閱讀
C語言中各運算符的結合性:
1、左結合性(自左至右):
例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合方向就稱為「左結合性」。
2、右結合性(自右至左)
自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。
⑻ C語言自定義可比較類型,像C++里的operator,java里的implements Comparable<T>
//簡單實現一下,C語言沒有操作符重載,只能通過函數實現
bool compareByX(const Point &p1,const Point &p2)
{//p1>p2返回true,否則返回false
return p1.x>=p2.x?true:false;
}
//同理
bool compareByY(const Point &p1,const Point &p2)
{//p1>p2返回true,否則返回false
return p1.y>=p2.y?true:false;
}
⑼ C++,關於operator的詳細總解,(原理和用法)
舉個例子:Class A
{……;
private:
vector<int> vec;
}
假設有對象a,一般我們想用a.vec[index]來調用數據,但vec是私有啊。
所以你想a[index]來調用vec中的數據。
那麼 A &A::operator[](int index)
{ return vec[index];
}
這樣就行了。
要把重載理解成函數,operator[]就是一個函數名,參數就是index
相當於a.operator[](index);
希望能幫助你理解!
⑽ C++ operator=
肯定是不行的。因為c++不支持沒有返回類型的函數。默認的在c語言里可以,但是c++不行。