c语言 - 'o' = 'u' + 6,这不应该是"o"="u"-6吗?数组默认不保留值 0 吗?

  • 本文关键字:数组 默认 保留 不应该 语言 c linux
  • 更新时间 :
  • 英文 :


>我真的很困惑。在 ASCII 中,'a'具有最低值,'z'最大的小写字母。但为什么'o' = 'u' + 6呢?

例如,假设我有

char array[100] = "errur";
char *ptr = array;

那我需要做

ptr[3] -= 6; // this
ptr[3] += 6; // not this

我做错了什么吗?

数组默认不初始化为

零吗?那么对于int array[10];元素array[9]最初保持值 0?


最后,当我在 shell 中运行&时,命令作业是列出工作事件的唯一方法吗?

在 ASCII 中'u'的值为117'o'具有值111,因此您必须从'u'中减去6才能得到'o'

#include <stdio.h>
int main(void)
{
char array[100] = "errur";
array[3] -= 6;
printf("%sn", array);
}
数组默认不初始化为

零吗?那么对于int array[10];元素array[9]最初保持值 0?

不。如果不初始化自动变量,则它们具有不确定的值。static变量会自动使用适当类型的0进行初始化。

在数组定义中省略初始值设定项时,这些元素将设置为零:

int foo[3] = { 0 };     // foo[0] = 0, foo[1] = 0, foo[2] = 0
int bar[3] = { 1, 2 };  // bar[0] = 1, bar[1] = 2, bar[2] = 0

最新更新