2015-11-02 2 views
-2
#include <stdio.h> 
int main(void) { 
    int *pVar, var = 10; 
    pVar = &var; 
    //*pVar = var; 

    printf("value = %d, address = Ox%X\n", var, &var);  
    // Format specifies type 'unsigned int' but the argument has type 'int *' 

    printf("pValue = %d, address = Ox%X\n", *pVar, pVar); 
    // Format specifies type 'unsigned int' but the argument has type 'int *' 

    *pVar = 20; 

    printf("value = %d, address = Ox%X\n", var, &var); 
    // Format specifies type 'unsigned int' but the argument has type 'int *' 

    printf("pValue = %d, address = Ox%X\n", *pVar, pVar); 
    // Format specifies type 'unsigned int' but the argument has type 'int *' 

    return 0; 
} 

я нахожу некоторое предупреждениеКак удалить предупреждение формата на языке c?

Формат определяет тип unsigned int но аргумент имеет тип int *

Даже если программа работает, как я собираюсь, я хочу знать, почему это произошло.

Что нужно сделать, чтобы удалить эти ошибки, не внося каких-либо ошибок в результат?

+4

Пожалуйста, разместить код в текстовом формате здесь. –

+0

@SouravGhosh Что означает «UB»? – Kotshi

+1

@ Kotshi неопределенное поведение. –

ответ

5

Вы можете использовать формат %p для указателей, как в

printf("value = %d, address = %p\n", var, (void *) &var); 
+0

Большое спасибо! –

+0

Листинг: '' (void *) & var' требуется для '% p'. –

+0

Делает смысл. Исправлен код. – user1969104

Смежные вопросы