c++ 条件运算符-C++中条件运算符?:作用在代码块的疑问

问题描述

C++中条件运算符?:作用在代码块的疑问

我编写对成绩评级的代码,利用条件运算符,可是执行代码块部分却出现了问题,请指教!
编译错误提示:缺少“;”(在“{”的前面)
代码如下:
#include
#include
#include

using namespace std;

int main()
{
vector vec = { "E","D","C","B","A","A++" };
int grade;
string result;
cout << "请输入你的成绩:";
cin >> grade;
(grade < 0 || grade>100) ? {
cout << "该成绩不合法" << endl;
return -1;
}
: (grade < 60)
result = vec[0];
:
{
result = vec[(grade - 50) / 10];
if ((grade % 10) <= 3 && (grade % 10)>0)
result += '-';
else if ((grade % 10) >= 7)
result += '+';

}

cout << result << endl;
return 0;

}

解决方案

你这个问题好有意思,我改了一下你的代码,大概弄出了这样的代码,不知道符不符合你的需求

 #include <iostream>
#include <vector>
#include "string"

using namespace std;

int getResult(string &result,int grade) {

    if ((grade % 10) <= 3 && (grade % 10)>0)
        result += '-';
    else if ((grade % 10) >= 7)
        result += '+';
    return 0;
}

int main()
{
    string vec[] = { "E","D","C","B","A","A++" };
    int grade;
    string result;
    cout << "请输入你的成绩:";
    cin >> grade;
    int b = (grade<0 || grade > 100)?(cout<<"该成绩不合法"<<endl,-1):
    (grade < 60?(result=vec[0],60)
     :(result = vec[(grade - 50) / 10],getResult(result,grade),100));

    if (b==-1) {
        return -1;
    }

    cout << result << endl;
    return 0;
}

解决方案二:

a < b ? a : ( b > c ? b : c )您 是想 嵌套 两层么 感觉 您 这好像 是少了个?号

解决方案三:

条件运算符:两边只能是表达式不能够是语句块的,运算符是用来对值做操作,表达式运算后有值,语句块怎么代表值。。。

解决方案四:

: 的后面,是不能放代码块的。
建议你不要那样写,写出的代码要容易读与理解。将复杂的代码,分成几行来实现比较好,最多也就是多几个临时变量。

解决方案五:

C++三目运算果然不同

时间: 2025-01-20 11:27:24

c++ 条件运算符-C++中条件运算符?:作用在代码块的疑问的相关文章

线程类中可以用静态代码块做初始化静态变量么?这些静态变量会不会有并发问题呢?

问题描述 线程类中可以用静态代码块做初始化静态变量么?这些静态变量会不会有并发问题呢? public class SalesConfirmationUploadThread extends Thread { private boolean result = false; private final SalesConfirmationPipedInputStream input; private long orderId; private String pin; private JingdongS

java-怎么获取一个JAVA类中各个方法的代码块

问题描述 怎么获取一个JAVA类中各个方法的代码块 特殊需求:获取一个JAVA类中各个方法的代码块来查找方法中是否包含某个关键字,现在通过发射只能拿到方法的属性和注释,有没有API或者其他方法,求告知,3Q 没金币了..对不起大家 PS:获取本地源代码的,不是运行时的class 解决方案 myeclipse中调试调用带有静态代码块的类时出现java.lang.NoClassDefFoundError的处理方法在DWR中实现直接获取一个JAVA类的返回值的两种方法java代码获取当前类类名.方法名

对象-C# 关于using代码块的疑问

问题描述 C# 关于using代码块的疑问 关于using(){ } 代码块,我之前一直以为是在()中实例化的对象,在{}结束后就被释放,也就是被置为null.今天写了如下测试代码,却发现和我之前以为的不一样,求教,所谓的释放资源具体是指什么? using (form = new Form()) { if (form != null) Output("form in using"); } Thread.Sleep(3000); if (form != null) { Output(&q

Java中的static静态代码块的使用详解_java

一.与静态方法的比较 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口.两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的. 二.静态方法注意事项 使用类的静态方法时,注意: a.在静态方法里只能直接调用同类中其他的静态成员(包括变量

Java中的static静态代码块

一.与静态方法的比较 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口.两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的.   二.静态方法注意事项 使用类的静态方法时,注意: a.在静态方法里只能直接调用同类中其他的静态成员(包括

iOS中 最新收集的代码块(汇总) 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博!手机加iOS开发者交流QQ群: 446310206 1.iOS - 推送 openssl合并 //1.1 生成 opensslkey openssl pkcs12 -nocerts -out PushKey.pem -in apns-dev-cert.p12 //1.2 输入以上成功之后会出现以下这段: Enter PEM pass phrase:输入密码 //2.导出 pem openssl pkcs12 -c

java中static{.......}代码块的作用

问题描述 java中static{.......}代码块的作用 java中static{.......}代码块主要用在哪里,表示什么意思,有什么用,里面主要写什么内容 解决方案 static后不跟方法名,这个块在该类第一次加载的时候运行,就是说比初始化模块还早就运行,一般用于加载该类需要一次性完成的功能使用. 解决方案二: Java中的static静态代码块 解决方案三: 初始化用,不需要创建实例,当你访问这个类时,就会执行 解决方案四: static 就是静态.你可以搜索一下关于静态的解释.网

深入浅析Java中普通代码块、构造代码块与静态代码块_java

//执行顺序:(优先级从高到低.) 静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1.普通代码块 public static void main(String[] args) { /*普通代码块: *直接定义在在方法或语句中出现"{普通代码的执行语句}"的就称为普通代码块. *普通代码块执行顺序由他们在代码中出现的次序决定--"先出现先执行" * */ { System.out.p

内存分配-java中非静态成员变量和构造代码块的先后加载问题

问题描述 java中非静态成员变量和构造代码块的先后加载问题 如果在java中同时存在构造代码块和非静态成员变量,请问他们的先后加载顺序?是顺序加载么? 例如: public Test{ { a =2.4f; System.out.println("构造代码块"); } float a =100; public static void main(String[] args) { System.out.println(new Test().a); } } 结果a = 100.0 publ