문제
"C ++ Primer Plus 5th Edition"을 읽는 동안이 코드를 보았습니다.
cin.get(ch);
++ch;
cout << ch;
따라서 Ch. 후 다음 문자를 표시합니다. 그러나 내가 그렇게한다면 :
cin.get(ch);
cout << ch+1;
이제 Cout은 CH가 int라고 생각할 것입니다 (Typecasting 시도). 그렇다면 왜 Cout은 그렇게합니까? 그리고 왜 내가 숯에 1을 추가하면 숫자를 생산할 것인가?. Ch ++와 CH+1 사이에 차이가있는 이유.
해결책
이것이 일어나는 이유는 문자의 유형입니다. 1
int입니다. int와 char를 추가하면 int를 얻지 만 숯을 증가 시키면 숯으로 남아 있습니다.
이 시도:
#include <iostream>
void print_type(char)
{
std::cout << "char\n";
}
void print_type(int)
{
std::cout << "int\n";
}
void print_type(long)
{
std::cout << "long\n";
}
int main()
{
char c = 1;
int i = 1;
long l = 1;
print_type(c); // prints "char"
print_type(i); // prints "int"
print_type(l); // prints "long"
print_type(c+i); // prints "int"
print_type(l+i); // prints "long"
print_type(c+l); // prints "long"
print_type(c++); // prints "char"
return 0;
}
다른 팁
참고 - 이것은 편집 된 원래 질문에 대한 답변입니다.
이제 Cout은 CH가 int라고 생각할 것입니다 (Typecasting 시도).
아니요. C ++에서 변수의 유형을 변경할 수 없습니다.
++ch;
Ch.
ch + 1;
ch의 값 (내용)을 취하고 1을 추가하고 결과를 폐기합니다. CH에있는 것은 변경되지 않습니다.
진술 ++ch;
증분 ch
반면 ch + 1;
그렇지 않습니다.
또한 '++ ch'가 실제로 진술서를 실행하기 전에 증분을 수행한다는 것을 기억합니다. 그래서 그것이 숯으로 남아 있습니다.
int i = 0;
cout << ++i << endl;
cout << i++ << endl;
// both will print out 1.
제휴하지 않습니다 StackOverflow