경고는 많지만 내 프로그램은 정상적으로 작동한다.
warning: assignment makes pointer from integer without a cast [-Wint-conversion]
warning: return makes integer from pointer without a cast [-Wint-conversion]
#include<stdio.h>
long int jumlah(long int a,long int b, long int * sum){
sum = (a+b);
return (sum);
}
int main(){
long int a,b,sum;
scanf("%d %d",&a,&b);
sum = jumlah(a,b,&sum);
printf("%d\n",sum);
return 0;
}
프로그램은 정상적으로 동작하지만 기능 내의 모든 것에 경고가 표시되며 그 이유를 알고 싶습니다.
jumlah 함수에서는 SUM 포인터가 가리키는 변수에 액세스하려면 SUM 포인터를 참조 해제해야 합니다.long ints 형식 지정자는 "%ld"입니다.
#include <stdio.h>
long int jumlah(long int a, long int b, long int *sum)
{
*sum = a+b;
return *sum;
}
int main(void)
{
long int a, b, sum;
scanf("%ld %ld", &a, &b);
sum = jumlah(a, b,&sum);
printf("%ld\n", sum);
return 0;
}
long int jumlah(long int a,long int b, long int * sum){
sum = (a+b);
return (sum);
}
sum에 대한 포인터입니다.long int. 유형 포인터의 값만 할당할 수 있습니다.long int하게.(a+b)type 값을 반환합니다.long int결과를 에 할당하려면 ,sum먼저 다음과 같이 참조를 해제해야 합니다.*sum = (a+b);
함수 반환 유형은 다음과 같습니다.long int, 그러나 다시sum포인터 타입이기 때문에 다음 중 하나를 반환하면 큰 차이가 납니다.sum또는*sum하나는 주소가 되고 다른 하나는 해당 주소에 저장되어 있는 값이 됩니다.
해당 함수의 반환 유형을 다음과 같이 변경하십시오.long int*및 반환sum(값 대신 주소를 반환하고 싶지만 그렇지 않은 경우에만 해당) 또는 참조를 취소하여 값을 반환한다.*sum함수에서 가져옵니다.
질문의 코멘트에 기재한 바와 같이, 당신은 포인터를 잘못 사용하고 있습니다.sum로서long int스토리지 타입.
이것은 불필요하게 복잡하다.간단히 하자. (좋은 코드는 날카롭다.)
long int jumlah( long int a, long int b ) {
return a + b;
}
int main(){
long int a, b;
// make use of return values from system (input) functions
if( scanf( "%d %d", &a, &b ) == 2 )
printf( "%d\n", jumlah( a, b ) );
else
printf( "Input error\n" );
return 0;
}
프로그램이 예상대로 작동할 수 있지만, 긴 정수를 긴 포인터에 채우고 있습니다(합계속해서 긴 포인터가 아니라 긴 포인터(합계)잘못된 타입이지만, 딱 맞아떨어집니다.기본적으로 다음과 같이 sum 파라미터를 로컬로 정의된 변수로 사용합니다.
long int jumlah(long int a,long int b){
long int sum;
sum = a + b;
return (sum);
}
main()에서는 jumlah()로부터의 반환을 합계에 저장하기 때문에 ersatz local 변수를 제공하는 대신 &sum을 전달해도 큰 효과가 없습니다.결과를 (반환과 더불어) 합계로 저장하는 경우 jumlah()는 다음과 같습니다.
long int jumlah(long int a,long int b, long int * sum){
*sum = a + b;
return (*sum);
}
컴파일러 경고는 항상 오류로 처리하여 수정하십시오.
언급URL : https://stackoverflow.com/questions/73598415/bunch-of-warnings-but-my-program-works-fine
'programing' 카테고리의 다른 글
| 왜 PHP json_encode 함수는 UTF-8 문자열을 16진수 엔티티로 변환합니까? (0) | 2023.02.02 |
|---|---|
| 재료 디자인 네비게이션 드로어의 햄버거 아이콘 색상 변경 방법 (0) | 2023.02.02 |
| jQuery 확인란이 상태 변경 이벤트 선택됨 (0) | 2023.02.02 |
| SQL이 테이블의 값을 다른 테이블에서 바꿉니다. (0) | 2023.02.02 |
| 먼저 특정 필드 값으로 정렬 (0) | 2023.02.02 |