c编程,为什么printf不工作?

ale*_* jw -3 c printf char

#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;
}
Run Code Online (Sandbox Code Playgroud)

arr [3] = arr [0] -arr 1 ; printf("[%c]%d \n",op,arr [3]);

为什么不打印%c?

在此输入图像描述

Spi*_*rix 5

这个:

arr[3]=arr[0]-arr[1];
printf("[%c] %d\n", op, arr[3]);
Run Code Online (Sandbox Code Playgroud)

应该

arr[2] = arr[0] - arr[1];
printf("[%c],  %d\n", op, arr[2]);
Run Code Online (Sandbox Code Playgroud)

因为数组索引从0开始并以长度结束 - 1. arr[3]在访问不应该访问的内存位置时使用导致未定义的行为.

在你的情况下,arr[3]可能是op.因此,在您给出的示例中,op's值分别更改为2和1,因此,printf尝试打印不可打印的控制字符,并且终端显示空格,因为这些控制字符是不可打印的.