Annual Open Tech Conference - ISsoft Insights 2021. June 19. Learn more.
×Закрыть

Не могу разобраться, нужна помощь

Прошу прощения за засорение форума школьным вопросом, но я должен понять, как надлежит работать следующему коду:

// Demonstration of using global variable.

#include <iostream>
using namespace std;

void func1();
void func2();

int count; // It's global variable.

int main()
{
	int i; // It's local variable.

	for(i=0; i<10; i++) {
		count = i * 2;
		func1();
	}

	return 0;
}

void func1()
{
	cout << "count: " << count; // Appealing to
	                            // global variable.
	cout << '\n'; // Outputing new line symbol.
	func2();
}

void func2()
{
	int count; // It's local variable.

	for(count=0; count<3; count++) cout << ' . ';
}

Пример из книги Шилдта. В результате работы на экран выводится следующее: s014.radikal.ru/.../1110/ea/235498eba625.jpg , чего я никак не могу понять. Как мне кажется, результатом выполнения второй ф-ии должно быть " . . . ". Заранее спасибо всем сочувствующим :-)

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

for(count=0; count<3; count++) cout << ’ . ’;

нужно cout << " . " , (двойные кавычки) —

сейчас вы выводите char — число, а не строку.

Что странно, в учебнике записано именно так, как я тут привел. Спасибо за ответ!

Это основное заблуждение начинающийх программеров на С/С++.
" ... " - здесь ты задаеш константнусю строку и в итоге полкчаем — массив символов + символ окончания строки (об этом никогда нельзя звбывать)
то есть если ты напишешь — strcpy(ptr, " abc "); то в prt скопируется 4 символа !!!
1 — a 2 -b 3 — c 4 — \n
’D’ - ну а в таких кавычкам можно задавать только один символ, при том большинство компиляторов пишут ворниноги или ерроры, если там более одного символа , в одиночных кавычках.

Спасибо, буду разбираться.

Да, это я перепутал, конечно \0, а не новая строка.

А , я понял — в " . " ты специально пробелы поставил, что бы их редактор не херил

s54.radikal.ru/...0ed6e1e0941.jpg кусок той страницы, так что сам я пробелы не добавлял, разве что там просто особенности шрифта и пробелов на самом деле нет.

Вполне возможно, что их там и правда нет =)

Так а у тебя , в исходниках как написано ? — 

for(count=0; count<3; count++) cout << ’ . ’;
или
for(count=0; count<3; count++) cout << ’ . ’;
то есть , в одинарных кавычках — там — просто точка, или пробел-точка-пробел ?

Я сначала подумал, что пробел-точка-пробел, поэтому так и записал, но там все же просто точка, уже после разглядел.

Не совсем верно , выводит он не строку, а символ. Первый символ в ... ’ . ’ это пробел — вот он этот пробел и выводит, а так как , точка, это уже второй символ, и вы верно сказали , что бы выводилось более одного символа — строка нужно поменять кавычки на двойные " . ".

я не пойму чего вы любезно решили меня поправить. :) вы картинку смотрели?
210896021089602108960
вопос был в том чего выводятся цифры а не «...», а не чего «один или два символа»

PS. Если есть свое мнение — пишите. но ваше «Не совсем верно» тут ни в «тын ни в ворота»

А что собой представляют эти цифры? Коды символов?

Тогда почему коды пробелов в каждом " . " не совпадают?

вашу последовательность ’ . ’ 3 байта компилятор интерпритирует как integer

std::cout << (int)’ . ’ << std::endl; // будет 2108960
std::cout << ’ . ’ << std::endl; // будет 2108960

std::cout << ’.’ << std::endl; // будет .

Подписаться на комментарии