c언어 산술연산자에 대해 질문이있습니다.
c언어 산술연산자에 대해 질문이있습니다.
%연사자가 a와 b를 나누면 나머지 값을 반환하는데
int num1=9,num2=2;
printf("%d % %d=%d\n",num1,num2,num1%num2);
이렇게 코드를짜니
9 %d=2
이런 값이 출력이되네여
무엇이 문제인지 알수있을까요?
printf의 포맷문자열의 기호인 '%'는 특정한 자료형의 표현하기 위해서 사용됩니다.
에를들면
int a=10;
printf("%d\n", a); // 10이 출력
그런데 님의 문장처럼 '%'를 문자 자체로 출력하려고 하면
컴파일러는 '%' 는 포맷문자열을 나타내기 때문에 '%' 만 쓰게 되면 형식에 맞지 않게 됩니다.
따라서 '%'문자 자체를 나타내고 싶으면 '%%' 를 써야 합니다.
다음과 같이 하면 됩니다.
printf("%d %% %d=%d\n",num1,num2,num1%num2);
"%d % %d=%d\n", 가 아니라 "%d %% %d=%d\n",로히면될것같네요. %하나만 쓰면 컴파일러가 해석하는데 문제의 여지가생겨서 그런것들에 추가로 더 붙여써야합니다
printf구문의 첫번째 양식의 내용에 어떤것들이 사용이 가능하고 어떤경우에 어떤방법으로 대응할수있을지 공부해두면 좋을 것같네요
% 기호를 한 개를 출력하려면 %% 이렇게 문자열로 쓰시면 됩니다.
printf 문자열 안에 % %d는 컴파일했을때 %%d로 인식해서 %d 이렇게 문자열로 출력한거 같네요.
문자열을 "%d %% %d=%d%d\n",num1,num2,num1%num2
이렇게 수정하시면 될겁니다.
이상입니다!
안녕하세요
산술연산자에 대해서 질문 하셨네요. 해당 문제는 간단한 문제라서 답변도 간단하게 될 것 같습니다.
일단 % 연산자에 대한 의미 자체는 정확히 알고 계시네요
하지만 코드를 보시면 printf 함수에서 출력하는 출력서식에 '%' 문자는 특수한 의미를 가지기 때문에
'%' 문자가 들어가게 되면 뒤에 오는 문자에 따라서 정수 형이든 실수 형이든 문자든 형에 맞게 출력을 하게 됩니다.
그래서 '%' 문자 자체를 해당 출력에서 사용하시려면 '%%' 이렇게 두개를 연달아 입력을 하셔야 합니다.
int num1=9,num2=2;printf("%d %% %d = %d\n",num1,num2,num1%num2);코드를 이렇게 변경하시면 정상적으로 출력이 되실꺼예요
답변이 도움이 되었으면 하네요.
위의 코드에서 컴파일한 출력값이 9 %d=2 으로 나오는 이유는
printf 함수를 통해 출력을 할 때 소스 코드 중 "%d % %d" 이 부분에서 출력 관련하여 문제가 생기기 때문입니다. 중간에 %를 출력하기 위해서 %%로 치환하여 다시 소스 코드를 작성하여 컴파일 하신다면 제대로 출력될 것으로 보입니다.
안녕하세요.
모듈로 연산의 사용에 대한 질문을 주셨네요.
printf 출력문에서 쉼표 전 서식문자(%d) 입력하신 부분을 보면
중간에 모듈로 연산 기호(%)를 출력해주기 위해 한번 더 입력하신 부분이 있습니다.
이 연산 기호는 특수 문자이므로, %를 두 번 입력해 주셔야 특수문자로 인식할 겁니다.
수정된 코드를 정리하면,
printf("%d %% %d = %d\n", num1, num2, num1%num2);
이렇게 해 보시면 될 듯 합니다.
코딩 시의 특수문자 출력 방법에 대해서는 구글에서 검색하시면 자세히 나올 것입니다.
도움이 되셨기를 바랍니다.
감사합니다.
안녕하세요. 아하 프로그래밍 지식 답변자 입니다.
해당 내용 Modular 연산자의 이스케이프 처리가 되어 있지 않아 발생하는 현상 입니다.
Modular 연산자를 문자 그대로 출력(이스케이프)하기 위해선 %% 두 번 입력이 필요합니다.
#include <stdio.h> int main() { int num1=9,num2=2; printf("%d %% %d=%d\n",num1,num2,num1%num2); return 0; }답변이 도움이 됐으면 좋겠습니다.
좋은 하루 되세요!
%d % %d=%d\n
사람이 보기에는 뒤에 있는 변수를 차례대로
%d, %d, %d에 넣으라고 판단할 수 있지만 컴퓨터는 모릅니다.
%이걸 붙이고 d를 넣으면 정수형 이라고 약속을 했는데 %뒤에 아무것도 없으니 말입니다.
따라서 이런것을 방지하기 위해 보통 프로그램 상에서 특수문자나 서식문자는 구분할 수 있는 기호들을 붙입니다.
%는 %% 로 표기 하면 String으로 %로 인식하여 출력할 수 있습니다.
printf("%d %% %d=%d\n",num1,num2,num1%num2);
구글에 c언어 서식문자라고 검색하시면 좀 더 다양한 답변을 들을 수 있을 것 같네요
C언어에서 %는 포맷 문자열에서 특수한 동작을 하는 문자입니다.
뒤에 문자가 덧붙여서 타입을 나타내거나, 정밀도나 얼마나 출력할지 길이 등을 정할 수 있습니다.
하지만 퍼센트라는 의미를 출력을 해야할 경우도 있기에 원 의미를 나타내기 위해 탈출(escape)하는 방법도 있습니다.
바로 %% 처럼 두 퍼센트를 연달아 사용하면 이 문자는 퍼센트라고 출력을 할 수 있습니다.
마치 C언어의 문자에서 역슬래시(\)가 줄바꿈문자(\n)나 탭문자(\t)등의 특수문자를 나타낼 수 있는데 역슬래시 자체를 출력하기 위해 두 개를 연달아 사용하는 것(\\)과 유사합니다.