小编Kri*_*dar的帖子

数组索引方法一个棘手的案例

#include<stdio.h>
int main() {
int buff[] = {1,2,3,4,5,6,9,10};
char c = (buff+1)[5];
printf("%d\n",c);//output is 9
return 0;
}
Run Code Online (Sandbox Code Playgroud)

有人可以清楚地解释这是如何发生的以及为什么

c arrays pointers

2
推荐指数
2
解决办法
97
查看次数

格式说明符%s%d的机器级别差异和空字节的%c

#include<stdio.h>
#include<stdlib.h>
int main( int argc ,char** argv) {
    int bugs = 100;
    char nul_byte='\0';
    char care_percentage = bugs * nul_byte;
    printf("Which means you should care %s%%.\n",care_percentage);// 1->prints (null)
    printf("Which means you should care %d%%.\n",care_percentage);// 2->prints 0
    printf("Which means you should care %c%%.\n",care_percentage);// 3->prints 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是在最后三个语句1,2和3中发生了什么.在机器级内部发生了什么.%s如何(null)和%d将其视为0,%c在打印时将其视为空.

有人可以在机器深度解释这些吗?

c

1
推荐指数
1
解决办法
232
查看次数

标签 统计

c ×2

arrays ×1

pointers ×1