Форум программистов, компьютерный форум, киберфорум
Наши страницы

Сравнение двух строк оператором == - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает явное преобразование типа, а неявное работает. http://www.cyberforum.ru/cpp-beginners/thread347792.html
Опечатался. Не работает явное преобразования, а не явное работает. Есть класс( не обращайте внимание на члены данные класса ): class Complex { friend std::istream &operator>>( std::istream &,...
C++ Системы счисления и вывод результата Здравствуйте, я получил задание создать программу которая принимает значение в 10-тичной системе и выводит на экран значение в любой выбранной системе от 2 до 36. #include<iostream> using namespace... http://www.cyberforum.ru/cpp-beginners/thread347770.html
C++ Размер массива
Нужно создать массив для хранения различных символов (буквы и различные знаки) Необходимо узнать его размер. Как это сделать? В массиве хранятся // символы поодиночке char *a = new char ;
C++ Стандартный класс complex.
1)Есть ли стандартный не шаблонный класс complex? Я нашел только шаблонный класс, определенный в заголовочном файле <complex> Есть ли нет не шаблонного класса complex, нельзя ли объявить объект...
C++ Помогите настроить CodeBlocks... http://www.cyberforum.ru/cpp-beginners/thread347740.html
Скачал CodeBlocks 10,5 ,при установки поставил везде галочки .Потом решил проверить работоспособность:Создал консольное приложение,выбрал язык с++,компилятор не стал менять,затем вылетела...
C++ sizeof и количество элементов в массиве Доброе время суток. Подскажите пожалуйста почему sizeof не возвоащает кол.элементов в массиве. #include <iostream> int main() { using namespace std; short int symbols =... подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
03.09.2011, 21:26
Цитата Сообщение от Trydorg Посмотреть сообщение
Ок!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main()
{
    char* a = "hello";
    char* b = "helli";
 
    if( a == b )
    {
        puts( "equal" );
    }
    else
    {
        puts( "different" );
    }
    return 0;
}
Почему different?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main()
{
    char* a = "hello";
    char* b = "hello";
 
    if( a == b )
    {
        puts( "equal" );
    }
    else
    {
        puts( "different" );
    }
    return 0;
}
Почему equal?
В первом случае у вас не равенство, потому что строковые литералы различны, а поэтому компилятор их размещает в разных частях памяти.
Во-втором случае код на самом деле зависит от реализации компилятора или от опции компилирования. То есть стандарт оставляет на усмотрение разработчиков компиляторов, как размещать в памяти строковые литералы, если они совпадают. Разработчики их могут помещать в одном месте, чтобы не транжировать память, а могут для каждого равного строкового литерала выделять отдельную память.
В вашем случае компилятор для совпадающих строковых литералов выделил память для хранения одного экземпляра, чтобы их не дублировать.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru