簡體   English   中英

c編程,為什么printf不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM