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++不行。