Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2012, 19:17   #1
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию warning C4018: '<' : signed/unsigned mismatch ?

Здравствуйте, не могу понять почему компилятор выдает такую вот ошибку
" warning C4018: '<' : signed/unsigned mismatch", объясните почему ему не нравиться знак?
код программы
Код:
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

using namespace std;

class String
{
public:
	int n;
    char *Str;
	char *newStr;
	
	String(char *Str);
	~String() { cout << "destruction" << endl; }

	void Set(char *s);
	void Print();
	void Run();

};

String :: String(char *Str)
{
	this->Set(Str);
	this->Set(newStr);
}

void String :: Set(char *s)
{
	this->Str = new char[255];
	this->newStr = new char[255];
}

void String::Run()
{
	int sum = 0;
	if ( strlen (this->Str) % 2 != 0 )
	{
		int Center = strlen(this->Str) / 2;
		int g = 0; 
		for(int i = 0; i < strlen(this->Str); i++)   // ВОТ ТУТ ТИП ОШИБКА
		{
			if (i != Center) 
			{
				this->newStr[g] = this->Str[i];
				g++;
	    	}
		}
			this->newStr [ strlen(this->Str) - 1] = '\0';
	}
	      else
		  {
			  this -> newStr = this -> Str;
	      }
}

void String::Print()
{
	cout << this->newStr << endl;
}

char main()
{
	String *str1 = new String("");
	cin.getline(str1->Str ,256);
	str1->Print();
	
	str1->Run();
	cout<<str1->newStr<<'\n';
	getchar();
	return 0;
}
заранее спасибо)
Тёма_) вне форума Ответить с цитированием
Старый 24.07.2012, 19:25   #2
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

strlen - возвращает size_t, size_t - unsigned int. Поэтому компилятор и говорит Вам что пытается сравнить числа знаковое и беззнаковое.
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 24.07.2012, 19:33   #3
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию )

ой благодарю)) вот это как то мне в голову не пришло) надо так
Цитата:
...
int Center = strlen(this->Str) / 2;
int g = 0;
for(unsigned int i = 0; i < strlen(this->Str); i++)
{
....
Большое спасибо)
Тёма_) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для типов данных char, short, int, long с квалификаторами signed, unsigned составить программу, которая, listiksasha Фриланс 4 21.02.2011 12:26
Для типов данных char, short, int, long с квалификаторами signed, unsigned составить программу, которая, listiksasha Помощь студентам 2 20.02.2011 12:57
Comparing signed and unsigned types - widened both operands Человек_Борща Общие вопросы Delphi 4 09.01.2011 14:59
[РЕШЕНО][C] unsigned int аргумент работает как signed Sfuller Общие вопросы C/C++ 2 30.06.2010 18:17