2013-06-06 38 views
37

Khi chấm dứt chuỗi, có vẻ như tôi hợp lý char c=0 tương đương với char c='\0', vì byte "null" (ASCII 0) là 0, nhưng thường thay vào đó, mọi người có xu hướng làm '\0'. Điều này hoàn toàn nằm ngoài sở thích hay nó nên là một "thực hành" tốt hơn?Chấm dứt chuỗi - char c = 0 vs char c = ' 0'

Lựa chọn ưu tiên là gì?


EDIT:K & Rnói: "Nhân vật liên tục '\0' đại diện cho nhân vật có giá trị bằng không, các ký tự null '\0' thường được viết thay vì 0 để nhấn mạnh bản chất nhân vật. của một số biểu thức, nhưng giá trị số chỉ là 0.

+1

Hey Joe DF! Đọc ngay K & R và có cùng một câu hỏi. Googled "\ 0 trong chuỗi c" và liên kết thứ hai là câu hỏi của bạn. Nó đã giúp tôi;) – vasili111

+1

@ vasili111 Tôi rất vui vì nó đã giúp bạn. :) –

Trả lời

30

http://en.wikipedia.org/wiki/Ascii#ASCII_control_code_chart

Binary Oct Dec Hex Abbr Unicode Control char C Escape code Name 
0000000 000 0  00  NUL  ␀  ^@   \0    Null character 

Không có sự khác biệt, nhưng thành ngữ đơn giản hơn là '\0'.

Có lẽ đặt nó xuống là char c = 0; có thể có nghĩa là bạn định sử dụng nó làm số (ví dụ: bộ đếm), mặc dù cá nhân tôi không gặp phải mã như vậy. '\0' rõ ràng.

+0

Chuẩn C có đảm bảo ASCII không? –

+0

Vâng, đó là về những gì tôi đọc của C99 đã cho là tốt. Cảm ơn câu hỏi đó, đã không tìm thấy nó trước đây. –

16

'\0' chỉ là ký tự ASCII. Giống như 'A', hoặc '0' hoặc '\n'
Nếu bạn viết char c = '\0', nó giống như char c = 0;
Nếu bạn viết char c = 'A', nó giống như char c = 65

Nó chỉ là một đại diện nhân vật và đó là một thói quen tốt viết nó, khi bạn thực sự có nghĩa là byte NULL của chuỗi. Kể từ char là trong C một byte (loại tích phân), nó không có bất kỳ ý nghĩa đặc biệt.

+0

hoặc thậm chí 0x41 :) –

+2

hoặc 0b1000001 hoặc 0101, điều đó không quan trọng trong câu trả lời của tôi. Đó là tất cả các con số. –

+0

hahaha funny: D –

3

Lựa chọn ưu tiên là có thể cho mọi người đọc mã của bạn một khả năng hiểu cách bạn sử dụng biến của mình - dưới dạng một số hoặc dưới dạng ký tự. Thực hành tốt nhất là sử dụng 0 khi bạn có nghĩa là bạn biến thành một số và sử dụng '\ 0' khi bạn ngụ ý biến của bạn là một ký tự.