Очень простой запрос по программированию на C - отображение значения int - PullRequest
4 голосов
/ 23 сентября 2011

Когда я компилирую эту маленькую программу вместо отображения "num1:7, num2: 2", отображается «num1:-1218690218, num2:-1217453276». Я думаю, что я не указываю, что программа должна отображать, поэтому вместо этого я просто указываю диапазон int. Прости.

#include <stdio.h>
main() {
     int num1 = 7, num2 = 2;                
     printf("num1:%d , num2:%d\n"), num1, num2;
}

РЕДАКТИРОВАТЬ: Большое спасибо! Цель этого упражнения состояла в том, чтобы исправить синтаксические ошибки, но всякий раз, когда я его компилировал, я не получал никаких предупреждений. Эту скобку так легко пропустить.

Ответы [ 10 ]

7 голосов
/ 23 сентября 2011

Вы поставили закрывающую скобку перед num1 и num2, поэтому они не передаются в printf. Вам нужно изменить это:

 printf("num1:%d , num2:%d\n"), num1, num2;

к этому:

 printf("num1:%d , num2:%d\n", num1, num2);

Да, скобка - единственное изменение, но оно крайне важно.

5 голосов
/ 23 сентября 2011

Вы используете оператор запятой вместо аргументов вызова функции.printf будет выводить значения мусора, но это также могло привести к сбою.


Так должно быть:

printf("num1:%d , num2:%d\n", num1, num2);

Обратите внимание на ) -характер.

4 голосов
/ 23 сентября 2011

Попробуйте это:

#include <stdio.h>
main() {
     int num1 = 7, num2 = 2;                
     printf("num1:%d , num2:%d\n", num1, num2);
     //                                      ^ num1 and num2 go inside the parentheses
}
4 голосов
/ 23 сентября 2011

Вы хотите переместить num1 и num2 в скобках:

printf("num1:%d , num2:%d\n", num1, num2);

Причина в том, что num1 и num2 являются частью вызова функции printf -без них printf использует случайные данные из других источников, давая вам эти большие отрицательные значения.

3 голосов
/ 23 сентября 2011

Если это фактический код, то исправьте его, переместив парен.

printf("num1:%d , num2:%d\n", num1, num2);
2 голосов
/ 23 сентября 2011

Я думаю, что ваша программа должна выглядеть примерно так </p> <pre><code>int main(){ int num1 = 7, num2 = 2; printf("num1 : %d num2 : %d\n",num1,num2); }

1 голос
/ 30 сентября 2011
#include <stdio.h>  
int main()
  {  
    //int num1 = 7, num2 = 2; this is static intialisation
    //u want it as dynamic u have to use 
    int num1,num2;
    scanf("%d%d",&num1,&num2); //get the values from user 
    printf("num1:%d , num2:%d\n", num1, num2); 
    return 0; 
   } 
1 голос
/ 23 сентября 2011

Происходит следующее: printf просматривает числа в памяти рядом с памятью, в которой работает программа (стек). Эти числа существуют по какой-то другой причине, когда printf просто смотрит на них, поэтому печатает их вместо num1 и num2. Как уже отмечали другие, ваши аргументы (num1 и num2) должны быть внутри скобок, чтобы printf мог их использовать.

1 голос
/ 23 сентября 2011

используйте компилятор, который проверяет ваш синтаксис что-то вроде pellesc для windows

#include <stdio.h>
int main(){
int num1 = 7, num2 = 2;
printf("num1:%d , num2:%d\n", num1, num2);
return 0;
}

ваш формат printf был неправильным, что редактор AC сказал бы вам

0 голосов
/ 24 сентября 2011

Вы хотели "вызвать printf с этой строкой формата, используя num1 в качестве первого значения для замены и num2 в качестве второго значения для замены; игнорируйте значение, которое возвращает printf".(printf обычно возвращает количество напечатанных байтов; фактическая печать является побочным эффектом.)

То, что вы написали, было "вызовом printf с этой строкой формата; игнорируйте возвращаемое значениеи оцените num1; игнорируйте это значение и оцените num2; проигнорируйте это значение ".Это неопределенное поведение: printf не было дано никаких значений для замены, и оно обычно вслепую обращается в памяти к тем значениям, которые он ожидает получить (иногда это приводит к сбою) - но языковой стандарт говорит, что ваша программаразрешено делать буквально все, что на данный момент.Да, это очень опасный язык для работы:)

Чтобы передать значения в printf, они должны быть в скобках, как показано в других ответах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...