2014-01-11 42 views
0

我正在写这个代码使用sizeof()函数与7个元素的char数组,我认为输出应该是8因为7个元素PLUS数组的终止符,但惊讶的是输出是5?怎么来的?sizeof(array_of_char)输出奇怪的数字

#include<stdio.h> 

int main(void) 
{ 
    char str[]="S\065AB"; 
    printf("\n%d",sizeof(str)); 

return 0; 
} 

回答

6

\065是一个单字符,表示为八进制转义序列。

+0

“八进制转义序列”是什么意思? ,你是怎么知道它是八进制的,以及其他的例子是什么? – Salahuddin

+2

@Salahuddin:由于领先的'0',它是八进制的。其他例子是'\ 064'和'\ 066'。 –

+0

所以,如果我想写'0'就可以写'0',但如果我想写八进制我必须写'\ 0',那么ocatal的数字是正确的? 你没有告诉我“逃生序列”是什么意思? – Salahuddin

5

用途:用于

char str[]="S\\065AB"; 

代替

char str[]="S\065AB"; 

\065是C转义序列。