2013-05-09 3 views

ответ

8

Вы можете использовать sizeof: распределение

char h[] = "hello\0world"; 

std::cout << sizeof(h); 
+0

Вы хотели бы разделить общий размер, однако по размеру полукокса, чтобы получить длину 'SizeOf (час)/SizeOf (char) ', если я не ошибаюсь. –

+7

'sizeof (char)' гарантированно будет 1. – Cairnarvon

+0

@cairnavron вы правы, я почему-то думал об использовании int. –

1

памяти для символьного типа зависит от операционной системы (16 бит, 32 бит операционной системы и т.д.). В некоторой операционной системе выделено 2 байта для данных типа char. Так запустить следующий код & это даст тот же результат во всей операционной системе:

#include<iostream.h> 
int main() 
{ 
      char h[] = "hello\0world"; 
      cout<<sizeof(h)/sizeof(char); 
      return 0; 
} 
+1

' sizeof (char) == 1' * по определению * в стандарте C. 'CHAR_BIT' технически не требуется, чтобы быть 8, но систем, где его нет, мало и сокращается. – zwol

+0

Кроме того, больше нет 'iostream.h', и приоритет оператора не является вашим другом, когда задействованы iostreams. Этот конкретный код выполняет то, что вы ожидаете, но если бы у вас были какие-либо логические или реляционные операторы, это не так. – zwol

+0

@Zack: +1, но вы забыли упомянуть, что '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' 'cout' не будет работать, если вы ставите три '<' вместо двух! ; -o –

Смежные вопросы