Code Fix

中級 › strcmpの戻り値を真偽値と勘違いして条件が逆になる › パターン5

strcmpの戻り値を真偽値と勘違いして条件が逆になる

strcmpは文字列が等しいときに0を返します。

 1  #include <stdio.h>
 2  #include <string.h>
 3  
 4  int main(void) {
 5      char role[] = "admin";
 6      if (__________________________) {
                         ^
 7          printf("is admin\n");
 8      } else {
 9          printf("not admin\n");
10      }
11      return 0;
12  }
出力: not admin期待: is admin

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

strcmpの戻り値を真偽値と勘違いして条件が逆になる

if (strcmp(a, b))と書くと「等しくないとき」に真になり、多くの人が期待する「等しいとき」とは逆の分岐になります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)