[英]c programming, why printf does not working?
#include<stdio.h>
int main(void) {
char op;
int arr[3];
printf("input ");
scanf("%d %c %d", arr,&op,arr+1);
arr[3]=arr[0]-arr[1]; //here
printf("[%c] %d\n", op, arr[3]);
return 0;
}
arr[3]=arr[0]-arr 1 ; printf("[%c] %d\\n", op, arr[3]);
為什么不打印 %c ?
這個:
arr[3]=arr[0]-arr[1];
printf("[%c] %d\n", op, arr[3]);
應該
arr[2] = arr[0] - arr[1];
printf("[%c], %d\n", op, arr[2]);
因為數組索引從 0 開始並以長度 - 1 結束。當您訪問不應該訪問的內存位置時,使用arr[3]
會導致未定義行為。
在您的情況下, arr[3]
可能是op
。 因此,在您給出的示例中, op
的值分別更改為 2 和 1,因此, printf
嘗試打印不可打印的控制字符,終端顯示空格,因為這些控制字符不可打印。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.