C++/SDL2 Mixer - 一个三元可以正常工作,但几乎完全相同的一个却不能?

C++/SDL2 Mixer - One ternary works correctly, but a nearly-identical one doesn't?

我正在编写一些简单的测试音频代码以确保 SDL_mixer 适用于我的应用程序,但在代码中,当给定来自 std::cin 的某些字符时,一切正常,除了减法10卷起。加10行,减1行,减10只减1不减10

在下面的代码中,变量 sound 是一个结构,包含 2 个名为 museff 的映射,由字符串索引并包含 Mix_Music*Mix_Chunk 变量分别。 “Moon Patrol”是我的音乐音频,“Pew”是我的测试效果音频。另外,对于大 if/else 声明,我感到抱歉,我将在实际程序中使用 GLUT 键进行输入。

相关代码:

Mix_PlayMusic(sound.mus["Moon Patrol"], -1);
    char i = ' ';

    std::cout << "i / k: volume +/- 1 | u / j: volume +/- 10 | q: quit | v: pew sound" << std::endl;

    while (i != 'q')
    {
        std::cin >> i;
        int cVolume = Mix_VolumeMusic(-1);
        if (i == 'i') Mix_VolumeMusic(cVolume + ((1) ? cVolume < 128 : 0));           // +1  Works
        else if (i == 'k') Mix_VolumeMusic(cVolume - (1 ?  cVolume > 0 : 0));         // -1  Works
        else if (i == 'u') Mix_VolumeMusic(cVolume + (10 ? cVolume + 10 <= 128 : 0)); // +10 Works
        else if (i == 'j') Mix_VolumeMusic(cVolume - (10 ? cVolume > 9 : 0));         // -10 Doesn't Work
        else if (i == 'p') std::cout << cVolume << std::endl;                         // Showing Volume Works
        else if (i == 'v') Mix_PlayChannel(-1, sound.eff["Pew"], 0);                  // Effect Works
    }                                                                                 // Exiting works

我尝试过但无效的方法:

我试过的东西按书面方式工作(但不是我想要的):

这表明它是关于三元的,但是减1和减10的代码本质上是相同的。有什么我想念的吗?

三元运算符是这样工作的:

变量=(条件)?表达真:表达假;