C++ “表达式必须包含整数或枚举类型”错误

Tbeam[j]+=d[i]/(sqrt(1-(m0/(m0+Ubeam[j]))^2)*c);,其中Tbeam,d,Ubeam均为double类型,但是在1上面显示“表达式必须包含整数或枚举类型”的错误,应该怎么修改?

你的^操作符使用错了,^操作符在C/C++里面是按位异或的意思,所以a^b的话,a和b都需要时整数才行,你的是double肯定不行了。不过我想你是想计算平方,C里面指数运算需要调用函数pow。

拓展:

1、C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言

2、它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。最新正式标准C++于2014年8月18日公布。其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!

3、C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
你的^操作符使用错了,^操作符在C/C++里面是按位异或的意思,所以a^b的话,a和b都需要时整数才行,你的是double肯定不行了。
不过我想你是想计算平方,C里面指数运算需要调用函数pow本回答被提问者采纳
第2个回答  2013-10-12
sqrt至少定义了两个函数,
double sqrt(double x)
long double sqrt (long double x);

现在你的参数转换有两种,要自动转换成double或者long double,但是因为两个都可以转换,所以他就报错了。你强制转换成double后应该不会 报错。

Tbeam[j]+=d[i]/(sqrt((double)(1.0-(m0/(m0+Ubeam[j]))^2)*c));
相似回答