繁体   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