Linux에서 C 언어로 된 고전적인 인터뷰 질문
过去多啦不再A梦
过去多啦不再A梦 2017-06-26 10:59:02
0
2
1164

GCC 컴파일러를 사용하여 Linux에서 다음 프로그램을 실행하면 출력은 무엇입니까?

으아아아

유형 변환, 데이터 자르기 및 채우기가 포함된다는 점만 알아두세요. 그런데 구체적인 설명을 모르시나요?

원래 질문 출처: Linux에서 C 언어로 된 몇 가지 고전적인 인터뷰 질문

过去多啦不再A梦
过去多啦不再A梦

모든 응답(2)
巴扎黑

char 的长度是 1 字节,并且,大多数的机器都将其视为有符号数的,所以它的表示范围是 [-128, 127](参见《深入理解计算机系统》P27~P28)。所以,当你给 c 赋值 127 时,你执行了 ++c 그러면 1바이트만 있기 때문에 오버플로가 발생합니다.

는 기계에서 127을 나타내며 이진수로 변환하면 다음과 같습니다. 01111111,可以看到,当你加 1 之后,结果就变成了 10000000,由于在计算机内部,负数是用补码来表示的,所以就变成了 -128。之后再 ++c, 즉 -127입니다.

다양한 유형의 경우 메모리 조각인 컴퓨터 내부에서 모두 동일하게 작동합니다. 따라서 유형에는 제한이 없습니다.

Peter_Zhu

이 질문은 언어가 아닌 编译器 테스트입니다.
3개의 변수 정의:

으아악

C 언어에서는 c가 계산에 참여할 때 c가 s_c로 변환될지 u_c로 변환될지는 编译器에 의해 결정됩니다.

gcc는 c를 부호 있는 숫자로 간주하고 후속 계산 및 출력은 부호 있는 숫자로 처리됩니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿