2013-09-24 2 views
2

내가 뭘 기꺼이 내가 배열의 모든 값을 각각의 ASCII 값으로 변환하고 다른 배열에 저장. 내 코드는 문자 값을 ASCII로 변환 할 수 있지만 다른 배열에 저장하는 데 실패합니다. 제발 도와주세요.배열에 값을 저장할 수 없습니다 C++에서

warning: variable ‘ass’ set but not used [-Wunused-but-set-variable] 

당신을 감사합니다

#include <iostream> 
#include <string> 
using namespace std; 
int main(){ 
    char ass[10]; 
    char name[]= "Chaitanya"; 
    int size=sizeof(name); 
    for(int i=0; i<size; i++){ 
     int p=name[i]; 
     cout<<p<<"\n"; 
     for(int j=0; j<size; j++){ 
      ass[j]=p; 
      } 
     } 
    return 0; 
    } 

나는 다음과 같은 오류 메시지가이 프로그램을 실행하려고

! 나는 이전 것을 얻었다. 하지만 내가 다시 한번 엉덩이에 저장된 그 모든 요소를 ​​인쇄하고 싶다면? 나는 다음 코드를 사용하고 있으며 아무 것도하지 않는다. 나는 어떤 오류도 내지 않고있다.

#include <iostream> 
#include <string> 
using namespace std; 
int main(){ 
    char ass[10]; 
    char name[]= "Chaitanya"; 
    int size=sizeof(name); 
    for(int i=0; i<size; i++){ 
     int p=name[i]; 
     cout<<p<<"\n"; 
     for(int j=0; j<size; j++){ 
      ass[j]=p; 
      } 
     } 
    for(int q=0; q<size; q++){ 
     cout<<ass[q]; 
     } 
    return 0; 
    } 
+0

"문자 값을 ASCII로 변환"- 이것은 아무 의미도 없습니다. 문자 값은 이미 ASCII의 수퍼 세트로 해석되는 이미 숫자 코드입니다. 그 밖의 모든 것은 표현의 문제입니다. 즉(문자로 취급) 또는 숫자의 문자열 표현으로 변환 (정수로 처리)하여 숫자 코드를 표시할지 여부를 지정합니다. –

답변

1

귀하의 경고는 단지 변수 ass을 사용하고 있지 않다는 것을 알려주는 것입니다. 그것은 오류가 아닙니다,하지만 당신은 코드에서 문제가 할 : 루프

int size = sizeof(name); 

for (int i = 0; i < size; i++) 
{ 
    int p = name[i]; 
    for (int j = 0; j < size; j++) 
    { 
     ass[j] = p; 
    } 
} 

두 번째는 단순히 하나의 문자 pass에서 각 문자를 덮어 쓰게됩니다. 루프가 필요하지 않습니다를 들어, 단지 메인 루프에서 문자를 할당 중첩 :

for (int i = 0; i < size; i++) 
{ 
    int p = name[i]; 
    ass[i] = p; 
} 

또한,이 표준 라이브러리 함수를 통해 촉진 될 수있다. 예 :

#include <iostream> 
#include <string> 

int main() 
{ 
    std::string ass; 
    std::string name = "Chaitanya"; 

    for (auto a : name) 
    { 
     std::cout << static_cast<int>(a); 
    } 

    ass = name; 
    std::cout << ass; // "Chaitanya" 
+0

ur 제안에 감사드립니다. 오버라이드는 중첩 된 루프를 실행하는 대신 좋은 아이디어라고 생각합니다. 너까지 엄지 손가락 – Chaitanya

2

경고는 실패가 아닙니다. 일단 그것을 저장하면 결코 사용하지 않는다는 것을 지적하고 있습니다!

+1

더 정확하게 당신은 << ... 엉덩이에 값을 넣지 마십시오. – Thomas

+0

하지만이 값은 엉덩이 [0]에 저장된 값을 인쇄하지 않습니다. 나는 엉덩이에 저장된 모든 요소를 ​​다시 한 번 인쇄하고 싶지만 작동하지 않습니다. – Chaitanya

+0

게시 한 코드에 다시 인쇄 할 수 없습니다. 전체 코드를 입력하면 모양을 볼 수 있습니다. – noelicus

1

경고는 정확합니다. ass 값만 설정하면 나중에 설정할 값을 사용하지 않습니다.

std::cout << ass[0] << std::endl ; 

나는 또한 당신이 추가 할 수 ass의 각 요소를 인쇄 할 경우, 두 번째 내부 루프를 필요가 있다고 생각하지 않습니다 당신의 루프 후 경고가 사라질 것 cout을 가정 해 봅시다 추가 한 경우 그걸 설정 한 후에야. 그래서 수정 및 추가는 다음과 같이 할 수 인쇄 :

for(int i=0; i<size; i++) 
{ 
    int p=name[i]; 
    cout<<p<<"\n"; 

    ass[i]=p; 
    std::cout << ass[i] << std::endl ;   
} 
+0

하지만이 값은 엉덩이 [0]에 저장된 값을 인쇄하지 않습니다. 나는 엉덩이에 저장된 모든 요소를 ​​다시 한 번 인쇄하고 싶지만 작동하지 않습니다. – Chaitanya

+0

@ChaitanyaChoudhary가 좀 더 자세한 내용을 추가했습니다 –

1

경고 : 변수 '엉덩이'설정하지만 사용 [-Wunused-하지만-설정 변수를]

이 경고 단지 변수 ass을 설정했지만 절대 사용하지 않는다고 가정 해보십시오. 전혀 오류가 아닙니다.

예로서, 경고를 사라지고이 어레이의 출력 값을 시도 : http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html :

std::cout << ass[0] << std::endl; 

여기 경고에 작은 부분이있다.

관련 문제