joker__ 发表于 2019-7-19 00:39:16

代码中的问号以及冒号的作用min = temp < strlen(slogan[min]) ? i : min;

for (i = 0; i < NUM; i++)
      {
                printf("%s\n", slogan);
                temp = strlen(slogan);
                min = temp < strlen(slogan) ? i : min;
                max = temp > strlen(slogan) ? i : max;
      }

其中问号和冒号的完整意思是什么,有点懵{:9_220:}

jackz007 发表于 2019-7-19 02:09:35

本帖最后由 jackz007 于 2019-7-19 10:18 编辑

      这是 C 语言的三目操作符
min = temp < strlen(slogan) ? a : b ;
      实际上等价于下面的语句:
if (temp < strlen(slogan)) {
      min = a
} else {
      min = b
}

      下面的代码与楼主贴出的代码片段是等效的:
for (i = 0; i < NUM ; i ++) {
      printf("%s\n", slogan)             ;
      temp = strlen(slogan)            ;
      if temp < strlen(slogan) min = i ; // min 的值只在 temp < strlen(slogan) 时 min = i,否则,维持原值
      if temp > strlen(slogan) max = i ; // max 的值只在 temp > strlen(slogan) 时 max = i,否则,维持原值
}

shuofxz 发表于 2019-7-19 13:31:26

temp < strlen(slogan) ? i : min;
这是一种特殊的操作语句,你可以理解为下面这个形式:

条件 ? 选项A :选项B

前面的条件判断是否为真,如果为真返回选项A,如果为假返回选项B

joker__ 发表于 2019-7-19 19:30:19

shuofxz 发表于 2019-7-19 13:31
这是一种特殊的操作语句,你可以理解为下面这个形式:

条件 ? 选项A :选项B


谢谢!!!
页: [1]
查看完整版本: 代码中的问号以及冒号的作用min = temp < strlen(slogan[min]) ? i : min;