После ввода целого числа для функции scanf () код не продолжается? - PullRequest
0 голосов
/ 17 марта 2020

Моя цель - создать программу, которая проверяет, установлен ли указанный бит c (введенный пользователем) в жестко запрограммированном целом числе (в данном случае 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");
    }
}

1 Ответ

0 голосов
/ 17 марта 2020

scanf function принимает address такой переменной scanf("%d", &position);

, а не самой переменной.

она поместит введенное значение в этот адрес, поэтому вам нужно добавить & к ваш scanf.

и даже после этого. кроме случаев, когда ваша позиция 0, этот код никогда не будет работать:

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

это инфинитив l oop. Он будет выполняться до тех пор, пока position не станет настолько большим, что int не будет иметь достаточно места для его хранения, чтобы position стал каким-то нелогичным числом, например, неинициализированными переменными.

...