Как переменной x присвоить значение 45
Перейти к содержимому

Как переменной x присвоить значение 45

  • автор:

 

Оператор присваивания. Запись значения в переменную на Си

Как Вы помните, переменные нужны чтобы хранить в них какие-то данные. Разберёмся как использовать переменные по их прямому назначению. Основной вопрос такой: «Как сохранить значение в переменной». Или вспоминая аналогию с коробкой «Как положить что-то в коробку?»

Ответ прост. Для этого существует специальный оператор, который называется оператором присваивания и обозначается символом равно » code-left»>

Листинг 1. Присваивание значения переменной

В примере выше показаны два способа присвоить значение переменной. В первом случае мы сначала создаём переменную, а потом записываем в неё значение, а во втором случае мы сразу создаём переменную и присваиваем ей значение.

Второй вариант записи короче, но делает в то же самое, что и первый. Берёт значение, которое записано справа от знака равно, и сохраняет его в переменную, которая записана слева от от него.

Не забывайте ставить после очередной команды точку с запятой.

Есть несколько важных моментов на которых надо отдельно заострить внимание:

  • в некоторых языках программирования, после того как вы создали переменную, в ней сразу же хранится значение нуль. В языке Си это не так. Пока переменной не присвоено какое-нибудь значение, в ней будет храниться «мусор». Как этот мусор выглядит мы посмотрим на следующем уроке.
  • справа от знака равно НЕ обязательно должно быть записано какое-то конкретное число, там может быть записано арифметическое выражение или имя переменной.

Остановимся на втором пункте подробнее. Чтобы лучше разобраться давайте обратимся к примерам.

Если справа от знака равно записано выражение, то сначала вычисляется его значение и уже оно сохраняется в переменную, которая записана слева от =.

Когда переменной присваивается значение, то то, что хранилось в ней до этого удаляется.

Обратите внимание, новое значение не добавляется к старому, а полностью заменяет его. Я как-то говорил, что переменные похожи на коробки, но только на первый взгляд. Теперь мы видим, что наша аналогия с коробкой не совсем точная. Если бы в коробке лежало десять шариков, и мы бы туда положили ещё пять, то их стало бы 15.

В выражении справа от знака равенства могут использоваться другие переменные, которые объявлены ранее. Вместо них в выражение подставляются значения, которые в них хранятся в данный момент.

При вычислении выражения n — 3, n равняется 5. Это потому, что исходное значение 10, заданное при инициализации, мы в программе изменяли. А при вычислениях используется текущее значение переменной.

В выражении справа от знака равенства может быть использована сама переменная.

Кажется, что это какой-то порочный круг, но на самом деле проблем здесь не возникнет. Т.к. сначала вычисляется выражение справа, а только потом происходит присваивание. По аналогии с предыдущим примером при вычислении значения справа от знака равно вместо переменной n будет подставлено её текущее значение, т.е. 10. Потом будет произведено сложение и присваивание.

Ещё один поучительный пример.

Если Вы подумали что 5, то это неправильно. Никто не знает, что в ней будет записано. Т.к. неизвестно, что было записано в переменной z. Ещё раз напоминаю, что если переменной не присвоено никакое значение, в ней хранится не нуль, а неизвестно что.

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

Теперь ещё один важный момент, который надо понимать. Когда я рассказывал о типах данных, я говорил, что в переменной можно хранить значения только того же типа, что и тип переменной. Например, в переменную целого типа нельзя положить вещественное число. Этот принцип применяется и с выражениями. Чтобы программа работала корректно, необходимо, чтобы тип выражения или переменной справа от знака присваивания совпадал с типом переменной.

Посмотрим несколько примеров.

Внимание на последнюю строчку! Хотя справа выражение целого типа, а слева вещественная переменная, данная команда всё равно будет работать так, как надо. Это из-за того, что все целые числа можно записать как вещественные, у которых дробная часть равна нулю. Подобная штука называется неявное приведение (преобразование) типов . С этой возможностью надо быть очень осторожным, т.к. компилятор не отслеживает такие ошибки. Другими словами программа будет скомпилирована, но работать будет неправильно. Мы ещё вернёмся к этому в следующем уроке, когда научимся выводить значение переменных на экран компьютера.

Сохрани в закладки или поддержи проект.

Практика

Решите предложенные задачи. Для удобства работы сразу переходите в полноэкранный режим

Как переменной x присвоить значение 45

x = y = z = 0
print(x)
print(y)
print(z)
0
0
0

j, k, l = «8host», 1.05, 16
print(j)
print(k)
print(l)
8host
1.05
16

glb_var = «global»
def var_function():
lcl_var = «local»
print(lcl_var)
print(lcl_var)
NameError: name ‘lcl_var’ is not defined

Всё ещё ищете ответ? Посмотрите другие вопросы с метками javascript или задайте свой вопрос.

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345

Примеры программ

Эта программа выводит на экран запрос «Сколько вам лет?:» и ждёт ввода данных. Если, например, ввести число 20, то программа выведет строку «Вам 20 лет.». При вызове функции scanf(), перед переменной age стоит знак &, так как функции scanf() нужны адреса переменных. Функция scanf() запишет введённое значение по указанному адресу. В нашем случае введённое значение 20 будет записано по адресу переменной age.

printf(«\How old are you?:»);

printf(«You are %d age old.», age);

Пример 16.

Программа калькулятор. Этот калькулятор может только складывать числа. При вводе 100+34 программа выдаст результат: 100+34=134.

printf(«\nAdding calculator of :»);

Этот пример показывает как установить ширину поля считывания. В нашем примере ширина поля равна пяти символам. Если вы введёте строку с большим количеством символов, то все символы после 5-го будут отброшены. Обратите внимание на вызов функции scanf(). Знак & не стоит перед именем массива name так как имя массива name является адресом первого элемента массива.

printf(«\nEnter your code (no more that 5 symbol):»);

printf(«\nYou enter %s», name);

Данный пример показывает как можно использовать множество поиска. После запуска программы введите число от 2 до 5.

printf(«Your mark 2,3,4,5:»);

printf(«\nThe mark is %c», bal);

Варианты заданий к лабораторной работе №1.

Вариант 1. Введите обозначения и объявите переменные x, y, z и s. Запишите инструкции, которые присваивают переменной «x» значение -25.6, переменной «y» значение 128, а значение переменной «z» вводится с клавиатуры. Вычислите сумму значений трех величин по формуле: s=x+y+z. Выведите результат на экран в виде:

You enter z=1

Summa: s=103.4

Вариант 2. Введите обозначения и объявите переменные x, y, z и S. Запишите инструкции, которые присваивают переменным «x», «y» и «z» значения, вводимые c клавиатуры. Вычислите квадрат суммы трех введённых вещественных чисел x, y, z. Выведите результат на экран в виде:

Вариант 3. Введите значение угла в градусах. Посчитайте и выведите значения cos, sin и tg этого угла. Результат решения задачи выведите на экран по образцу:

Примечание: см. Приложение Б

Вариант 4. Введите обозначения и объявите вещественную переменную x (x>0). Значение переменной вводится с клавиатуры. Вычислите десятичный и натуральный логарифмы введённого значения. Выведите результат на экран по образцу:

You enter: Answer:

x=2.5 ln(2.5)=0.916

log(2.5)=0.3974

Примечание: см. Приложение Б

Вариант 5. Введите обозначения и объявите переменные x, y, f. Запишите инструкции, которые присваивают переменной «x» значение 30.5, значение переменной «y» вводится с клавиатуры. Вычислите по формуле: f=+. Выведите результат на экран по образцу:

You enter: Answer:

x=1.4 f=5.725

Примечание: см. Приложение Б

Вариант 6. Введите обозначения и объявите переменные x, y, z и S. Запишите инструкции, которые присваивают переменным «x», «y» и «z» значения, вводимые c клавиатуры. Вычислите квадрат разности трех введённых вещественных чисел (x-y-z) 2 . Выведите результат на экран в виде:

z=3.1

 

Answer: 38.44

Вариант 7. Введите значение углов a и b в градусах. Посчитайте и выведите значения cos и sin этих углов. Результат решения задачи выведите на экран по образцу:

sin(45)=0.707 sin(90)=1

cos(45)=0.707 cos(90)=0

Примечание: см. Приложение Б

Вариант 8. Введите обозначения и объявите переменные a, b, c и d. Запишите инструкции, которые присваивают переменной «a» значение -87.3, переменной «b» значение 111, а значение переменной «c» вводится с клавиатуры. Вычислите по формуле: d=+b – a. Выведите результат на экран в виде:

You enter c=0

Answer: d=199.3

Примечание: см. Приложение Б

Вариант 9. Введите обозначения и объявите вещественные переменные y (y>0) и x (x>0). Значения переменных вводятся с клавиатуры. Вычислите десятичный и натуральный логарифмы введённых переменных. Выведите результат на экран по образцу:

You enter: Answer:

x=2.5 ln(2.5)=0.916 log(2.5)=0.3974

y=1 ln(1)=0 log(1)=0

Примечание: см. Приложение Б

Вариант 10. Введите значение угла в градусах такое что . Посчитайте и выведите значения arccos, arcsin и arctg этого угла. Результат решения задачи выведите на экран по образцу:

Примечание: см. Приложение Б

Вариант 11. Введите обозначения и объявите переменные x, y, f. Запишите инструкции, которые присваивают переменной «x» значение 1000, значение переменной «y» вводится с клавиатуры. Вычислите по формуле: f=+. Выведите результат на экран по образцу:

You enter: y=1.4

Примечание: см. Приложение Б

Вариант 12. Введите значение угла в градусах такое что . Посчитайте и выведите значения arccos, arcsin и tg этого угла. Результат решения задачи выведите на экран по образцу:

You enter:

Примечание: см. Приложение Б

Вариант 13. Введите обозначения и объявите переменные x, y, z и p. Запишите инструкции, которые присваивают переменной «x» значение -11.54, переменной «y» значение 45, а значение переменной «z» вводится с клавиатуры. Вычислите сумму значений трех величин по формуле: p=x*y*z. Выведите результат на экран в виде:

You enter z=0.09

Product: p=46.73

Вариант 14. Введите обозначения и объявите вещественные переменные y (y>0) и x (x>0). Значения переменных вводятся с клавиатуры. Вычислите десятичный и натуральный логарифмы введённых переменных. Выведите результат на экран по образцу:

log(1)=0

Примечание: см. Приложение Б

Вариант 15. Введите значение угла в градусах. Посчитайте и выведите значения cos, sin и tg этого угла. Результат решения задачи выведите на экран по образцу:

sin(45)=0.707; cos(45)=0.707; tg(45)=1.000

Урок №10. Переменные, Инициализация и Присваивание

Программируя на языке C++, мы создаем, обрабатываем и уничтожаем объекты. Объект — это часть памяти, которая может хранить значение. В качестве аналогии мы можем использовать почтовый ящик, куда мы помещаем информацию и откуда её извлекаем. Все компьютеры имеют оперативную память, которую используют программы. При создании объекта, часть оперативной памяти выделяется для этого объекта. Большинство объектов, с которыми мы будем работать в языке C++, являются переменными.

Переменные

Cтейтмент a = 8; выглядит довольно простым: мы присваиваем значение 8 переменной a . Но что такое a ? a — это переменная, объект с именем.

На этом уроке мы рассмотрим только целочисленные переменные. Целое число — это число, которое можно записать без дроби, например: -11, -2, 0, 5 или 34.

Для создания переменной используется стейтмент объявления (разницу между объявлением и определением переменной мы рассмотрим несколько позже). Вот пример объявления целочисленной переменной a (которая может содержать только целые числа):

При выполнении этой инструкции центральным процессором часть оперативной памяти выделяется под этот объект. Например, предположим, что переменной a присваивается ячейка памяти под номером 150. Когда программа видит переменную a в выражении или в стейтменте, то она понимает, что для того, чтобы получить значение этой переменной, нужно заглянуть в ячейку памяти под номером 150.

Одной из наиболее распространенных операций с переменными является операция присваивания, например:

Когда процессор выполняет эту инструкцию, он понимает её как «поместить значение 8 в ячейку памяти под номером 150».

Затем мы сможем вывести это значение на экран с помощью std::cout:

l-values и r-values

В языке C++ все переменные являются l-values. l-value (в переводе «л-значение», произносится как «ел-валью») — это значение, которое имеет свой собственный адрес в памяти. Поскольку все переменные имеют адреса, то они все являются l-values (например, переменные a , b , c — все они являются l-values). l от слова «left», так как только значения l-values могут находиться в левой стороне в операциях присваивания (в противном случае, мы получим ошибку). Например, стейтмент 9 = 10; вызовет ошибку компилятора, так как 9 не является l-value. Число 9 не имеет своего адреса в памяти и, таким образом, мы ничего не можем ему присвоить (9 = 9 и ничего здесь не изменить).

Противоположностью l-value является r-value (в переводе «р-значение», произносится как «ер-валью»). r-value — это значение, которое не имеет постоянного адреса в памяти. Примерами могут быть единичные числа (например, 7 , которое имеет значение 7 ) или выражения (например, 3 + х , которое имеет значение х плюс 3 ).

Вот несколько примеров операций присваивания с использованием r-values:

Давайте детально рассмотрим последнюю операцию присваивания:

Здесь переменная b используется в двух различных контекстах. Слева b используется как l-value (переменная с адресом в памяти), а справа b используется как r-value и имеет отдельное значение (в данном случае, 12 ). При выполнении этого стейтмента, компилятор видит следующее:

И здесь уже понятно, какое значение присваивается переменной b .

Сильно беспокоиться о l-values или r-values сейчас не нужно, так как мы еще вернемся к этой теме на следующих уроках. Всё, что вам нужно сейчас запомнить — это то, что в левой стороне операции присваивания всегда должно находиться l-value (которое имеет свой собственный адрес в памяти), а в правой стороне операции присваивания — r-value (которое имеет какое-то значение).

Инициализация vs. Присваивание

В языке C++ есть две похожие концепции, которые новички часто путают: присваивание и инициализация.

После объявления переменной, ей можно присвоить значение с помощью оператора присваивания (знак равенства = ):

В языке C++ вы можете объявить переменную и присвоить ей значение одновременно. Это называется инициализацией (или «определением»).

Переменная может быть инициализирована только после операции объявления.

Хотя эти два понятия близки по своей сути и часто могут использоваться для достижения одних и тех же целей, все же в некоторых случаях следует использовать инициализацию, вместо присваивания, а в некоторых — присваивание вместо инициализации.

Правило: Если у вас изначально имеется значение для переменной, то используйте инициализацию, вместо присваивания.

Неинициализированные переменные

В отличие от других языков программирования, языки Cи и C++ не инициализируют переменные определенными значениями (например, нулем) по умолчанию. Поэтому, при создании переменной, ей присваивается ячейка в памяти, в которой уже может находиться какой-нибудь мусор! Переменная без значения (со стороны программиста или пользователя) называется неинициализированной переменной.

Использование неинициализированных переменных может привести к ошибкам, например:

В этом случае компилятор присваивает переменной a ячейку в памяти, которая в данный момент свободна (не используется). Затем значение переменной a отправляется на вывод. Но что мы увидим на экране? Ничего, так как компилятор это не пропустит — выведется ошибка, что переменная a является неинициализированной. В более старых версиях Visual Studio компилятор вообще мог бы вывести какое-то некорректное значение (например, 7177728 , т.е. мусор), которое было бы содержимым той ячейки памяти, которую он присвоил нашей переменной.

Использование неинициализированных переменных является одной из самых распространенных ошибок начинающих программистов, но, к счастью, большинство современных компиляторов выдадут ошибку во время компиляции, если обнаружат неинициализированную переменную.

Хорошей практикой считается всегда инициализировать свои переменные. Это будет гарантией того, что ваша переменная всегда имеет определенное значение и вы не получите ошибку от компилятора.

Правило: Убедитесь, что все ваши переменные в программе имеют значения (либо через инициализацию, либо через операцию присваивания).

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *