Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
126 views
in Technique[技术] by (71.8m points)

c - Printing octal literal in printf

What is the proper way to print an octal literal? For example, the following works for the hex digit x but not for the octal :

printf("x66 102
");

f 2

How can this be done?

question from:https://stackoverflow.com/questions/65650265/printing-octal-literal-in-printf

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Octal literal consists of 1 to 3 digits. 4-digit sequence like 102 is not supported. It seems this is treated as two characters: 10 and 2.

What you want may be printf("x66 102 ");. This will print f B if ASCII is used.

Quote from N1570 6.4.4.4 Character constants:

octal-escape-sequence:
octal-digit
octal-digit octal-digit
octal-digit octal-digit octal-digit

The octal digits that follow the backslash in an octal escape sequence are taken to be part of the construction of a single character for an integer character constant or of a single wide character for a wide character constant. The numerical value of the octal integer so formed specifies the value of the desired character or wide character.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...