c - 这个C语言程序有什么问题吗?

标签 c

我是 C 编程的初学者,我不明白这个简单的 C 程序有什么问题。我不希望程序停止,然后我创建一个 goto 语句以使其继续。问题是程序永远不会停止(即使我按 2)。这是源代码:

    #include <stdio.h>

int 
main(){

int i , num , d , times ,a ;
float next;
printf("Choose a number: ");
scanf("%i" , &num);

printf("Repeat number ... times: ");
scanf("%d" , &times);

for(i=0; i<times; i++){
    printf("%i\n" , num);
}

printf("Do you want to continue? (1=Yes   2=No) :");
scanf("%a" , &next);

if(a=1){
    goto jump;
}
else if(a=2){
    return 0;
}
else{
    printf("Invalid value");
    goto error;
}
jump:
    printf("Choose a number: ");
scanf("%i" , &num);

printf("Repeat number ... times: ");
scanf("%d" , &times);

for(i=0; i<times; i++){
    printf("%i\n" , num);
}

printf("Do you want to continue? (1=Yes   2=No) :");
scanf("%a" , &next);

if(a=1){
    goto jump;
}
else if(a=2){
    return 0;
}
else{
    printf("Invalid value");
    goto error;
}

error:
printf("Do you want to continue? (1=Yes   2=No) :");
scanf("%a" , &next);

if(a=1){
    goto jump;
}
else if(a=2){
    return 0;
}
else{
    printf("Invalid value");
    goto error;
}
}

最佳答案

问题在于比较数字的方式。在第 21 行,您检查了用户是否要继续使用以下代码:

if(a=1){
    goto jump;

比较运算符是==。使用 =,将 1 赋给变量 a。任何非 0 值都会被评估为 true,因此您的代码所做的就是将 1 赋给 a,检查 a 是否不为 0,然后跳转。

关于c - 这个C语言程序有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34372397/

相关文章:

没有参数的 c optarg atoi

关于潜在未初始化变量的编译器警告

c - 以下程序中位掩码的使用来自 Programming Pearls

父进程退出后子进程无法读取

c++ - 有多少数据段内存与 C 中的代码段一起加载

使用模数计算

c - c中指向数组和二维数组的指针

c - 嵌入式 ARM 和 C 运行时

c - 从进程内部查找映射的内存

在运行时检查指针后面的数据以避免段错误 : (wchar_t *) vs. (char *)