#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?
这个:
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尝试打印不可打印的控制字符,并且终端显示空格,因为这些控制字符是不可打印的.
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |