C# C布尔逻辑
我一直在尝试一些C语言的程序,遇到了这个C# C布尔逻辑,c#,c,boolean-logic,C#,C,Boolean Logic,我一直在尝试一些C语言的程序,遇到了这个 #include<stdio.h> int main() { int j = 3, k; k= !5 && j; printf("%d", k); return 0; } 这将产生错误 (错误1运算符“!”不能应用于“int”类型的操作数C:\Documents and Settings\SANDEEP\My Documents\Visual Studio 2005\Projects\Cons
#include<stdio.h>
int main()
{
int j = 3, k;
k= !5 && j;
printf("%d", k);
return 0;
}
这将产生错误
(错误1运算符“!”不能应用于“int”类型的操作数C:\Documents and Settings\SANDEEP\My Documents\Visual Studio 2005\Projects\ConsoleApplication18\ConsoleApplication18\Program.cs 21 17 ConsoleApplication18)
我想知道为什么我的C代码输出不起作用,以及如何使用运算符。
请帮助。5
当解释为布尔值时为真,因此!5
将布尔结果设为false,这将导致&&
也设为false。False被解释为int
is0
如果要执行位运算而不是简单的布尔运算,则C代码使用了错误的运算符。下面是一个包含正确运算符的示例
在当前的C代码中,k=!5&&j,5被认为是正确的,所以!5是0(假)。然后用j和它,但是任何false和任何boolean都是false,所以得到0
您可能想要(tilda5)&j之类的东西,您正在尝试执行逻辑NOT。必须对C#中的int(不是~运算符)执行按位NOT运算。请看这里:
在C中,任何非零值,如5
都被认为是“true”,因此!5
计算为0
,或“false”。因此,0&&3
也是错误的
在C#中,类型系统在这方面稍强一些。
运算符仅对类型为bool
的值起作用,该类型与整数类型完全无关。看
我怎么能用这个!c#中的运算符
这是逻辑not运算符。你把它放在一个bool
的右边,它会产生相反的结果。在C语言中,没有从整数到bool
的隐式转换
顺便说一句,你在C#中的“相同代码”有不同的数值 可读的C代码:
编译它,运行它,以及如何计算表达式
#include <stdio.h>
int main() {
int j = 3, k;
k = !5 && j;
printf("!5 = %d \n", !5);
printf("j = %d \n", j);
printf("!5 && j = %d \n", !5 && j);
printf("k = %d \n",k);
return 0;
}
#包括
int main(){
int j=3,k;
k=!5&&j;
printf(“!5=%d\n”,!5);
printf(“j=%d\n”,j);
printf(“!5&&j=%d\n”、!5&&j);
printf(“k=%d\n”,k);
返回0;
}
您可能无法以这种方式将“!”应用于C#中的整数。我相信您可以通过在int上使用“~”来实现这一点。
您可以将“!”应用于布尔值(我不知道它在C#中是如何调用的)。此C代码的等效代码
#include<stdio.h>
int main()
{
int j=3,k;
k=!5&&j;
printf("%d",k);
return 0;
}
请注意,C#不允许在int上使用布尔逻辑运算符。如果您想将int转换为bools,您必须编写代码来实现这一点,正如我在这里所做的那样
两个程序都正确地输出零,因为5不等于0,所以!5(C)或!(5!=0)(C#)为假。在C语言中,false转换为零。在C#中,条件运算符的替代项为零
这回答了你的问题吗?在C#(和Java)中,你可以做如下事情
k = (4 == 0) && (j != 0);
以获得与C程序相同的行为。将一个整数与0进行比较得到的“逻辑”与C相同。C程序通过输出0正确运行。你希望它能做什么?回答你的第二个问题,c#(不像c)似乎不允许将整数视为布尔数。编辑此内容以消除大写字母锁定的叫喊……唉……听说过网络礼仪吗……请不要发短信——我们会说和读英语……@马丁:与流行的看法相反,C++编译器一般不能编译C代码;不过,这两种语言都有一个共同的子集,这使得编写代码成为可能,并且可以使用编译器对这两种语言进行编译languages@sandy101:当你问一个关于“不起作用”的问题时,你必须解释是什么让你相信它不起作用,以及你期望它如何起作用。您的C程序工作正常,这是应该的。因此,当您描述程序的正确行为并断言它“不工作”时。。。嗯,听起来像胡说八道。标题是C布尔逻辑,而不是C位运算。@fusbar标题是我编辑的。原始指定的仅为“逻辑”。+1;准确地说:任何非零标量值都被视为“真”,如果您真的想在C#中实现C逻辑not对数字的相同效果,只需使用number==0。
class Program {
static int Main()
{
int j=3, k;
k = !(5 != 0) && (j != 0) ? 1 : 0;
Console.WriteLine("{0}", k);
return 0;
}
}
k = (4 == 0) && (j != 0);