为scanf()函数输入整数后,代码是否继续?

为scanf()函数输入整数后,代码是否继续?,c,printf,scanf,C,Printf,Scanf,我的目标是创建一个程序,检查是否在硬编码整数(在本例中为159)中设置了特定位(由用户输入)。但是,当我输入所需的整数时,控制台会暂停大约一秒钟,然后在没有错误消息的情况下退出程序。所有printf()函数都不会执行,因为在退出控制台之前,控制台上不会打印任何其他函数。我对C相当陌生,所以我需要一些帮助 #include <stdio.h> int main() { int x = 159; int position = 1; scanf("%d", po

我的目标是创建一个程序,检查是否在硬编码整数(在本例中为159)中设置了特定位(由用户输入)。但是,当我输入所需的整数时,控制台会暂停大约一秒钟,然后在没有错误消息的情况下退出程序。所有printf()函数都不会执行,因为在退出控制台之前,控制台上不会打印任何其他函数。我对C相当陌生,所以我需要一些帮助

#include <stdio.h>

int main() {
    int x = 159;
    int position = 1;

    scanf("%d", position);

    if (position == 0) {
        position = 1;
        printf("if");
    }
    else {
        for (int i = 0; i < position; i++) {
            position *= 2;
        }
        printf("else");
    }

    printf("%d", position);

    if ((x & position) != 0) {
        printf("true");
    }
    else {
        printf("false");
    }
}
#包括
int main(){
int x=159;
int位置=1;
扫描频率(“%d”,位置);
如果(位置==0){
位置=1;
printf(“如果”);
}
否则{
对于(int i=0;i
scanf函数
获取变量的
地址
,如
scanf(“%d”和位置)

不是变量本身

它会将输入的值放入该地址,因此您需要将
&
添加到
scanf

甚至在那之后。除非您的职位是
0
,否则此代码永远不会工作:

    else {
        for (int i = 0; i < position; i++) {
            position *= 2;
        }
        printf("else");
    }
else{
对于(int i=0;i

这是一个不定式循环。它将一直执行,直到
position
变得太大,以至于
int
没有足够的空间来存储它,所以
position
会变成一些不合逻辑的数字,比如未初始化的变量。

请仔细阅读您的书籍或教程,了解
scanf
及其所需的参数。您需要向变量传递指针。为什么要使用
scanf
<代码>int main(int argc,char**argv){int position=argc>1?strtol(argv[1],NULL,10):1;…
对于学习C语言的人来说,最好的经验法则是:在理解语言之前不要使用scanf。这不是给新手的。谢谢你,这真的很有帮助。至于不定式循环,我知道我绝对不能将参数变量放入for循环本身,但我也是个白痴。谢谢你的时间!:)@MartinKiryakov不用客气。不用谢。如果真的对你有帮助,就接受答案。