Russian Qt Forum
Июнь 11, 2024, 15:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: +"str"  (Прочитано 8716 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Август 31, 2010, 15:11 »

Что делает конструкция

Код
C++ (Qt)
const char *p = +"-i";

? Улыбающийся
Записан
BRE
Гость
« Ответ #1 : Август 31, 2010, 15:21 »

Что делает конструкция

Код
C++ (Qt)
const char *p = +"-i";

? Улыбающийся
IMHO, тоже что и
Код
C++ (Qt)
const char *p = "-i";
Записан
Alex_cs_gsp
Гость
« Ответ #2 : Сентябрь 01, 2010, 07:48 »

Это зачем выдумать так нужно было?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Сентябрь 01, 2010, 08:04 »

>>Это зачем выдумать так нужно было?
скорее всего до плюса, что-то было. Потом не понадобилось, удалили. А про плюс забыли
Записан

Юра.
zenden
Гость
« Ответ #4 : Сентябрь 01, 2010, 10:33 »

И что же до плюса могло быть?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Сентябрь 01, 2010, 12:59 »

я писал более сложную конструкцию из QStringList() << "a" << "b" << ..., и случайно нажал + перед "a", забыв о нём, я откомпилил. Так обнаружилась верная с точки зрения языка конструкция
Код
C++ (Qt)
+"a"
Теперь вот сижу думаю, что она означает исходя из того, что -"a" конструкция уже неверная Улыбающийся
Записан
Alex_cs_gsp
Гость
« Ответ #6 : Сентябрь 01, 2010, 14:07 »

Так тоже можно

   const char *s = "i";
   const char *p =  +s;
Записан
spectre71
Гость
« Ответ #7 : Сентябрь 02, 2010, 13:26 »

"+" в данном случае унарная операция.

int a = 10;  // a == 10
int b = +10; // b == 10
int c = -10; // c == -10

Аналогично:

const char *t = "-i"; // t == адрес строки("-i")
const char *p = +"-i"; // p == адрес строки("-i")
const char *r = -"-i"; // r == - адрес строки("-i")


« Последнее редактирование: Сентябрь 02, 2010, 13:28 от Spectre » Записан
Alex_cs_gsp
Гость
« Ответ #8 : Сентябрь 02, 2010, 13:38 »

"+" в данном случае унарная операция.

int a = 10;  // a == 10
int b = +10; // b == 10
int c = -10; // c == -10

Аналогично:

const char *t = "-i"; // t == адрес строки("-i")
const char *p = +"-i"; // p == адрес строки("-i")
const char *r = -"-i"; // r == - адрес строки("-i")


const char *r = -"-i"; не катит
Записан
spectre71
Гость
« Ответ #9 : Сентябрь 02, 2010, 13:53 »

const char *r = -"-i"; не катит

Не важно. Важен принцип. А почему компилятор переваривает +"-i"; - вопросы к его разработчикам.
Записан
Alex_cs_gsp
Гость
« Ответ #10 : Сентябрь 02, 2010, 13:56 »

Да как бы в VS2010 тоже самое. Просто так правильно, разработчики тут не причем.
Записан
spectre71
Гость
« Ответ #11 : Сентябрь 02, 2010, 14:09 »

Да как бы в VS2010 тоже самое. Просто так правильно, разработчики тут не причем.

Опять же не важно.
+"str";  ничего не меняет с точки зрения синтаксиса, видимо из-за этого ее считают допустимой
-"str";  является недопустимой для данного типа.

Вот так можно:
int aaa = -(int)"bbb";
Записан
Alex_cs_gsp
Гость
« Ответ #12 : Сентябрь 02, 2010, 14:14 »

Код:
	int a = -5;
int b = 5;

const char *str_1 = reinterpret_cast<const char*>(a);
const char *str_2 = reinterpret_cast<const char*>(b);

str_1 и str_2 будут разными адресами.
Записан
spectre71
Гость
« Ответ #13 : Сентябрь 02, 2010, 14:22 »

Код:
	int a = -5;
int b = 5;

const char *str_1 = reinterpret_cast<const char*>(a);
const char *str_2 = reinterpret_cast<const char*>(b);

str_1 и str_2 будут разными адресами.

Ну и что. Все правильно. Правда оба указателя будут невалидными.
Записан
Alex_cs_gsp
Гость
« Ответ #14 : Сентябрь 02, 2010, 15:19 »

Ну так для строки "+" это валидный указатель, а "-" нет.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.232 секунд. Запросов: 19.