C++ 错误:到?的操作数:具有不同的类型';int';和';std::basic_ostream<;char>'; #包括 #包括 使用名称空间std; int main(){ INTA、b、c、D; 双x1,x2; cout>a; cout>b; cout>c; D=功率(b,2)-4*a*c; x1=(-b+D)/(2*a); x2=(-b-D)/(2*a); cout

C++ 错误:到?的操作数:具有不同的类型';int';和';std::basic_ostream<;char>'; #包括 #包括 使用名称空间std; int main(){ INTA、b、c、D; 双x1,x2; cout>a; cout>b; cout>c; D=功率(b,2)-4*a*c; x1=(-b+D)/(2*a); x2=(-b-D)/(2*a); cout,c++,C++,按照注释中的建议,将两个操作数强制转换为void: #include <iostream> #include <cmath> using namespace std; int main(){ int a , b , c , D ; double x1 , x2 ; cout << " a = " ; cin >> a; cout << " b = " ; cin >>

按照注释中的建议,将两个操作数强制转换为void:

#include <iostream>
#include <cmath>

using namespace std;

int main(){

    int a , b , c , D ;
    double  x1 , x2 ;
    cout << " a = " ;
    cin >> a;
    cout << " b = " ;
    cin >> b;
    cout << " c = " ;
    cin >>c;
    D = pow(b,2) - 4 * a * c;

    x1 = (-b + D ) / (2*a);
    x2 = (- b - D) / (2*a);

    cout << "D = " << D << endl;
    D >= 0 ? ( x1,x2) : (cout << "nope . \n" , x1 = x2 = 0);

    cout << x1 << endl;
    cout << x2 << endl;


    (D % 2) == 1 ? (D++) : (cout << "Number is even . \n" );    //check if number is uneven and if it is then add 1

    cout << D << endl;



 return 0;
}


对于
?:
的其他用途,您也需要做同样的事情。

在问题的评论中已经说过,但要澄清这一点

三元(?)运算符的返回类型等于两个代码分支的类型。如果分支返回的类型不同,则编译器将显示此错误

三元运算符的注释用法是根据条件为变量赋值:

bool isConnected=true;
静态整数idCount=0;
int connectionID=未连接?++idCount:-1;

将两个操作数强制转换为无效?停止滥用条件运算符。如果使用
,则很好。
(D%2)==1?(D++):(任务是否希望我使用条件运算符operator@Skyline然后是“任务”是垃圾。所以基本上两个表达式必须是相同的类型,如果不是的话,编译器会立即显示错误?基本上是的。这就是为什么给出的答案使用强制转换无效。因为这样两个路径都将返回无效。@Skyline如果你找到了它,请按左边的绿色勾号将你的问题标记为已解决。
(D % 2) == 1 ? void(D++) : void(cout << "Number is even . \n" );
if (D % 2 == 1)
    D++;
else
    cout << "Number is even . \n";