Не удается привести int к bool
11 ответов
int и bool не может быть неявно преобразован (в отличие от C++, например).
это сознательное решение, принятое языковыми дизайнерами для сохранения кода от ошибок, когда число было использовано в условии. Условия нужно принять boolean явное значение.
представьте, если разработчик хотел сравнить foo с 20, но пропустил одно равенство знак:
приведенный выше код будет компилироваться и работать, и побочные эффекты могут быть не очень очевидным.
нет необходимости бросать:
включение bool упрощает написание самодокументированного кода
значение bool равно true или false
преобразует 0 и null в false и все остальное в true.
в других языках false эквивалентно 0, а true эквивалентно 1, но это невозможно в языке C#.
В C# bool на самом деле Boolean структуры, поэтому он не просто представлен как 1 или 0 внутри. Похоже, что создатели языка пошли на явный над неявным подходом в целом с языком. Чтобы выполнить то, что вы пытаетесь сделать (эффективно бросить 1 в true и 0 false ), этого:
вероятно, повторяя другие здесь, но вы не можете бросить int в bool, потому что int не является bool. Это int. Кто бы мог подумать? 😉
также где вы получаете свое исключение? Запуск следующего кода, безусловно, приведет к ошибке компилятора:
вы должны делать некоторые общие вещи, которые не показаны в свой вопрос.
» в других языках false эквивалентно 0, а true эквивалентно 1, но это невозможно в языке C#.»
обязательно напечатает fred is true
Если вы хотите бросить две переменные значения в bool, как var, который имеет (1 и 2 и хочет вернуть 1 для false и 2 для true), я предлагаю :
можно использовать тернарный оператор, как показано ниже, вместо литых. боол б = истина; int i = 1;
вам, вероятно, лучше с ранее предложенным Convert.ToBoolean(foo) в любом случае, хотя.
Я работаю над поиском пути для учебных целей. Мне нужно случайным образом блокировать некоторые узлы как walkable/blocked.
Нельзя преобразовать тип boolean к integer
Пишет: Program1.pas(7) : Нельзя преобразовать тип boolean к integer
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Ошибка: нельзя преобразовать тип boolean к integer
Program A123; var a,b,X,Y,interval,p:integer; sum,REZ:real; begin writeln(‘Enter variabiles a.
Ошибка «Нельзя преобразовать тип integer к boolean»
при компиляции ошибка «нельзя преобразовать тип integer к boolean’ как исправить, но чтоб код.
Ошибка : Нельзя преобразовать тип array [1..8] of integer к integer
Дана целочисленная матрица В размером 5х8. Получить массив С из 0 и 1, в котором Ci=1, если в i –ой.
Нельзя преобразовать тип integer к array [1.8] of integer
Естественное слияние.pas(116) : Нельзя преобразовать тип integer к array of integer program cal;.
1. это только в математике умножение. В программирование это вызов подпрограммы с именем n, которой у вас нет.
2. n это boolean, что по вашему должно произойти если отнять от его значения 2 или 1?
3. Дайте условие задачи. Вообще его надо давать в самом начале.
В городе, в котором живут друзья Андрей и Борис, метро состоит из единственной кольцевой линии, вдоль которой на равном расстоянии друг от друга расположены n станций, пронумерованных от 1 до n. Участок линии метро между двумя соседними станциями называется перегоном.
Поезда по кольцевой линии двигаются как по часовой стрелке, так и против часовой стрелки, поэтому чтобы добраться от одной станции до другой, пассажир может выбрать то направление, в котором требуется проехать меньше перегонов. Минимальное число перегонов, которое необходимо проехать, чтобы добраться от одной станции до другой, назовем расстоянием между станциями.
Друзья заметили, что выполняется следующее условие: если загадать некоторую станцию X и выписать для нее два числа: Da — расстояние от станции, на которой живет Андрей, до станции X и Db — расстояние от станции, на которой живет Борис, до станции X, то полученная пара чисел [Da, Db] будет однозначно задавать станцию X.
Например, если n = 4, Андрей живет на станции 1, а Борис живет на станции 2, то станция 1 задается парой [0, 1], станция 2 — парой [1, 0], станция 3 — парой [2, 1] и станция 4 — парой [1, 2].
Их одноклассник Сергей живет в соседнем городе и не знает, на каких станциях живут Андрей и Борис. Чтобы найти друзей, он заинтересовался, сколько существует вариантов пар станций A, B, таких что если Андрей живет на станции A, а Борис — на станции B, то выполняется описанное выше условие.
Требуется написать программу, которая по числу станций n на кольцевой линии определяет искомое количество вариантов.
Входные данные
Первая строка входного файла содержит одно целое число n (3 ≤ n ≤ 40 000).
Выходные данные
Выходной файл должен содержать одно число — искомое количество вариантов.
Пояснения к примерам
В первом примере подходят следующие варианты:
* Андрей живет на станции 1, а Борис на станции 2;
* Андрей живет на станции 1, а Борис на станции 4;
* Андрей живет на станции 2, а Борис на станции 1;
* Андрей живет на станции 2, а Борис на станции 3;
* Андрей живет на станции 3, а Борис на станции 2;
* Андрей живет на станции 3, а Борис на станции 4;
* Андрей живет на станции 4, а Борис на станции 1;
* Андрей живет на станции 4, а Борис на станции 3.
Примеры
входные данные
4
выходные данные
8
входные данные
5
выходные данные
20
как исправить ошибку в c# неявное преобразование типа int в bool невозможно??
решаю тут задачку по матрицам. мозгов не хватает.
помогите, пожалуйста.
нужно из матрицы удалить строки, в которых все элементы отрицательные. я пока вот на этом этапе. у меня куча ошибок, кроме этой. пожалуйста. даже ПОЖАЛУЙСТА. ПОМОГИТЕ!! все ошибки, которые есть исправить. и вообще в правильном ло я направлении двигаюсь??
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication7
<
class Program
<
// функция
public static void SumStolb(int[,] a, int n, int m, int[] sb, out int indexmax, out int smax)
<
int i, j, p;
int s = 0;
smax = 0;
indexmax = 0;
for (j = 0; j 0)
<
// нахожд. суммы пол.эл-в каждого столбца
s = s + a[i, j];
>
//нах-е столбца с макс суммой
if (j == 0)
<
smax = s;
indexmax = 0;
>
else
<
if (s > smax)
<
smax = s;
indexmax = j;
>
>
sb[j] = s; // определение одномерного массива
>
while (i=0; i 0)
<
// нахожд. суммы пол. эл-в каждого столбца
s = s + a[i, j];
>
//нах-е столбца с макс суммой
if (j == 0)
<
smax = s;
indexmax = 0;
>
else
<
if (s > smax)
<
smax = s;
indexmax = j;
>
>
sb[j] = s; // определение одномерного массива
b = new int[p, n];//новая матрица
for (i = 0; i Голосование за лучший ответ



