为什么永远不会达到断点?

时间:2016-03-03 04:16:33

标签: c loops

请考虑以下代码:

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "declaration": false,
        "noImplicitAny": false,
        "removeComments": true,
        "noLib": false,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "sourceMap": true
    },
    "files": [
      "typings/main.d.ts"
    ],
    "exclude": [
        "node_modules",
        "typings/browser.d.ts",
        "typings/browser/**"
    ],
    "compileOnSave": false
}

我的直觉说应该从第二次迭代到达断点 #include<stdio.h> /* Makes you guess a number and predicts it. */ int main(void) { short guess=0; _Bool first_time="TRUE"; printf("Guess a number from 1 to 100\n"); printf("Lemme guess it\n"); printf("Press n if the guess is wrong, y otherwise\n"); do { if (first_time) { first_time="FALSE"; } else { printf("Break point"); // This point is never reached while execution while (getchar() != '\n') ; // Waste the buffer till the newline character } printf("\nMy guess : %d",++guess); printf("\nAm i right ? "); }while( getchar() != 'y' ); return 1; } 循环。但它没有发生。

有人可以解释原因吗?

注意:

编译器:gcc版本4.9.2(Debian 4.9.2-10)

2 个答案:

答案 0 :(得分:1)

您要将字符串分配给_Bool类型的类型。您可能已收到警告,指出您正在指定一个整数类型的指针,或类似的东西。你应该使用0或1作为_Bool类型。

答案 1 :(得分:0)

如果你打印first_time的值,你会发现,first_time总是1。 请在这里查看他_Bool(http://en.cppreference.com/w/c/language/arithmetic_types#Boolean_type)。

你必须加入stdbool.h,添加使用链接:first_time = true;