C에서 (char)0과 '\0'의 차이점은 무엇입니까?
사용할 때의 차이점은 무엇입니까?(char)0
그리고.'\0'
문자 배열에서 끝맺음 Null 문자를 나타내는 것?
둘 다 0이지만,(char) 0
차인 반면에'\0'
는 (unint적으로).int
. 값이 0인 경우 이 유형 차이가 일반적으로 프로그램에 영향을 주지 않습니다.
나는 더좋아요'\0'
, 그것은 그것을 위해 의도된 상수이기 때문입니다.
문자 리터럴의 백슬래시 표기를 사용하면 문자 자체를 사용하는 대신 문자의 숫자 값을 지정할 수 있습니다. 그래서'\1'
[*]는 "숫자 값이 1인 문자"를 의미하며,'\2'
"숫자 값이 2인 문자" 등을 의미합니다.거의.C의 괴상함으로 인해 캐릭터 리터럴은 실제로 유형을 갖습니다.int
, 그리고 정말로int
반환 값과 같은 다른 컨텍스트의 문자도 처리하는 데 사용됩니다.fgetc
.그렇게'\1'
"숫자 값이 1인 문자의 int로 숫자 값" 등을 의미합니다.
문자는 C의 숫자 값이므로 "숫자 값이 1인 문자"는 실제로 (char)1
, 그리고 추가 장식은'\1'
컴파일러에 영향을 미치지 않습니다 -'\1'
다음과 같은 유형과 값을 갖습니다.1
따라서 문자 리터럴보다 백슬래시 표기가 문자열 리터럴에서 더 필요합니다. 고유한 이스케이프 코드가 없는 인쇄 불가능한 문자를 삽입하기 위해서 말이죠.
저는 개인적으로 글 쓰는 것을 더 좋아합니다.0
내가 0을 의미하고, 암묵적인 변환이 그들의 역할을 하도록 내버려 둘 때.어떤 사람들은 그것을 이해하기 매우 어렵다고 생각합니다.그런 사람들과 일할 때는 글을 쓰는 것이 도움이 됩니다.'\0'
당신이 값이 0인 문자를 의미할 때, 즉 당신이 당신의 것을 기대하는 경우에.0
곧 은연중에 다음으로 전환할 것입니다.char
타이프. 비슷하게 글을 쓰는 데 도움이 될 수 있습니다.NULL
널 포인터 상수를 의미한다면,0.0
값이 0인 두 배를 의미하는 경우 등.
컴파일러에 차이가 있는지 여부와 캐스트가 필요한지 여부는 문맥에 따라 달라집니다.부터'\0'
와 정확히 같은 유형과 값을 갖습니다.0
, 에 캐스팅 될 필요가 있습니다.char
정확히 같은 상황에서 말입니다'\0'
그리고.(char)0
유형이 다릅니다. 정확히 동등한 식에 대해 고려할 수 있습니다.(char)'\0'
대(char)0
, 아니면'\0'
대0
.NULL
는 구현 정의된 유형을 갖습니다. 정수 유형을 가질 수 있기 때문에 포인터 유형으로 캐스트해야 하는 경우도 있습니다.0.0
활자가 있습니다double
, 그래서 확실히 다른 것입니다.0
..float f = 1.0;
와 동일합니다.float f = 1;
그리고.float f = 1.0f
,반면에.1.0 / i
,어디에i
는 int이고, 일반적으로 다음과 다른 값을 갖습니다.1 / i
.
그래서, 어떤 일반적인 규칙이라도'\0'
아니면0
코드를 읽는 사람들의 편의를 위해서입니다. 컴파일러도 마찬가지입니다.사용자(및 동료)가 선호하는 모양을 선택하거나 매크로를 정의합니다.ASCII_NUL
.
[*] 또는'\01'
- 백슬래시는 10진수가 아니라 8진수를 도입하기 때문에 0으로 시작하는 것을 확인하여 이를 조금 더 명확하게 하는 것이 현명합니다. 물론 0, 1, 2의 경우에는 차이가 없습니다.나는 "가끔"이라고 말합니다. 왜냐하면 백슬래시 뒤에는 세 팔자 숫자만 따를 수 있기 때문에 당신은 글을 쓸 수 없기 때문입니다.\0101
대신에\101
, 독자들에게 그것이 팔분의 값이라는 것을 상기시키기 위해서입니다.이 모든 것이 매우 어색하며, 더욱 많은 장식으로 이어집니다.\x41
대문자 A에 대해, 그러므로 당신은 글을 쓸 수 있습니다.'\x0'
원하신다면 0에 한합니다.
0은 C에서 많은 다른 것들을 의미할 수 있습니다.null 문자 '\0'을 사용해야 합니다. 그러면 의도가 문자열 종료라는 것을 혼동할 수 없기 때문입니다.
char를 0으로 설정하면 null termination을 의미할 수 있지만 문자열의 일부가 아닌 계산을 위해 char를 8비트 정수로 사용하는 것일 수도 있습니다.만약 당신이 같은 코드에서 포인터를 사용하고 있고, 그것들을 0과 비교한다면, 이것은 더 혼란스러울 수 있습니다. 이것은 또한 널 포인터입니다.
문자 배열은 문자열을 사용하는 것을 의미하므로 다음을 사용하는 것이 좋습니다.'\0'
사용자로부터 모든 문자를 읽은 후 문자 배열의 끝에 다음과 같은 이유가 있습니다.0
단순한 성격이지만.'\0'
이다.NULL
String의 끝을 나타냅니다.
언급URL : https://stackoverflow.com/questions/7578632/what-is-the-difference-between-char0-and-0-in-c
'programing' 카테고리의 다른 글
Sequelize로 MariaDB에 값 'null'을 삽입하는 방법? (0) | 2023.10.17 |
---|---|
CSS 두 디브가 서로 옆에 있음 (0) | 2023.10.17 |
Angular js 지시어의 post link vs pre link (0) | 2023.10.17 |
워드프레스 웹사이트에서 AJAX를 호출할 때 API키를 확보하는 방법은? (0) | 2023.10.17 |
SQL GROUP BY - COUNT() 함수 사용 (0) | 2023.10.17 |