КИТА unofficial
Ноябрь 22, 2024, 10:28:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   ПРАВИЛА Помощь WIKI PDA Войти Регистрация  


Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Малоизвестные особенности С/С++  (Прочитано 69708 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Storm
Верховный
Администратор
Аспирант
*****

Карма: +29/-0
Offline Offline

Пол: Мужской
Сообщений: 484



« Ответ #20 : Июль 14, 2008, 10:53:03 »

проверишь на 64 битной платформе - получишь 8 вместо 4 (на настоящей 64 бита типа UltraSparc). С преобразовал символ в число и в программме обработал целую переменную базового типа int. С++ обрабатывал как char - это скорее можно отнести к особенностям компиляторов, хотя стандарты на язык порыть не помешает, если это важно Улыбка
Записан

Только две вещи бесконечны: вселенная и тупость, и я еще не уверен по поводу вселенной. (Альберт Эйнштейн)
----------------------------------------------------
"There are two major products that came out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence." (с) Jeremy S. Anderson

Проходит ирландец мимо паба....
tos
Mодератор
Декан
*****

Карма: +80/-16
Offline Offline

Награды:
1 место в фотоконкурсе \1,3 место в фотоконкурсе \II место в фотоконкурсе \
Сообщений: 1949


♪♪ ♫Nice boys don`t play Rock`n`Roll♫ ♪♪


« Ответ #21 : Июль 14, 2008, 12:13:39 »

по моему дело не в самой платформе а в разрядности компилятора, не так ли?
например в VS есть компилятор x86-64
Записан
Alder
Администратор
Проректор
*****

Карма: +331/-16
Offline Offline

Пол: Мужской
Награды:
За II место в конкурсе поэзии (весна-2007)2 место в фотоконкурсе \За II место в фотоконкурсе \3 место в фотоконкурсе \2 место в фотоконкурсе \Лучший знаток музыки 2009Лучший знаток музыки 2010
Сообщений: 11224


just for fun


WWW
« Ответ #22 : Июль 14, 2008, 12:22:03 »

Storm, ну дык это и требовалось. Не особенности компилятора, а особенности самого языка получается. Т.е. для С++ мы получим 1, а для С не 1 Улыбка
Записан

"There are things known and there are things unknown, and in between are the doors..." (Jim Morrison)
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #23 : Июль 14, 2008, 04:45:28 »

Смотрим на отличия языков ISO C и C++, описанные в самом Стандарте С++:
Цитировать
Change: Type of character literal is changed from int to char
Rationale: This is needed for improved overloaded function argument type matching. For example:
int function( int i );
int function( char c );
function( ’x’ );
It is preferable that this call match the second version of function rather than the first.
Effect on original feature: Change to semantics of well-defined feature. ISO C programs which depend on
sizeof(’x’) == sizeof(int)
will not work the same as C++ programs.
Difficulty of converting: Simple.
How widely used: Programs which depend upon sizeof(’x’) are probably rare.
Про оператор sizeof:
Цитировать
The sizeof operator yields the number of bytes in the object representation of its operand.
...
sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1.
Стандарт С++ обязывает рассматривать символьный литерал как объект типа char, размер которого вне зависимости от реализации обязан быть равен одному.
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
LazarusLong
Ирландский доброволец
Проректор
*****

Карма: +181/-7
Offline Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« Ответ #24 : Июль 29, 2012, 02:20:41 »

1. многие знакомы с тернарным оператором

x = (y < 0) ? 10 : 20;

но далеко не всем известно, что тернарный оператор может быть lvalue, т.е. находится слева от оператора присваивания:

(a == 0 ? a : b) = 1;

Что является сокращением для следующего кода:

if (a == 0)
    a = 1;
else
    b = 1;

2. в инициализационной части цикла for могут быть объявлены не только переменные но и классы, объекты, структуры, функции и т.д. Например

for(struct { int a; float b; } loop = { 1, 2 }; ...; ...) {
    ...
}
Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
Страниц: 1 [2]  Все   Вверх
  Печать  
 
Перейти в:  

Penguins Counter Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS! Internetmap
Страница сгенерирована за 0.061 секунд. Запросов: 31.