


| 运算符 | 名称 | 示例 | 描述 |
|---|---|---|---|
| && | 与 | a && b | 当a和b都为真时,返回真 |
| || | 或 | a || b | 只要a或者b,其中任何一个为真,返回真 |
| ! | 非 | !a | 如果a的条件为真,返回假 |
? 变量
a && b
a || b
!a
? 数值
5 && 3
20 || a
!0
? 表达式
a+b && c
a-b || c-a
!(a+c)
逻辑运算符的运算结果为0(假)或者1(真)
真,条件不成立结果则为 假。#include <stdio.h>
int main() {
printf("1 && 2 结果为%d\n", 1 && 2);
printf("0 && 3 结果为%d\n", 0 && 3);
printf("5 && 0 结果为%d\n", 5 && 0);
printf("0 && 0 结果为%d\n", 0 && 0);
return 0;
}

#include <stdio.h>
int main() {
printf("1 || 2 结果为%d\n", 1 || 2);
printf("0 || 3 结果为%d\n", 0 || 3);
printf("5 || 0 结果为%d\n", 5 || 0);
printf("0 || 0 结果为%d\n", 0 || 0);
return 0;
}

#include <stdio.h>
int main() {
printf("!2 结果为%d\n", !2);
printf("!0 结果为%d\n", !0);
return 0;
}

!! ,将任何值转换为布尔值
!!可以将一个整数、字符或指针值转换为一个布尔值。例如,下面的代码片段中,将字符串转换为布尔值,并将其用于条件判断:
#include <stdio.h>
int main()
{
char *str = "hello";
int bool_value = !!str;
if(bool_value)
{
printf("str is not null\n");
}
else
{
printf("str is null\n");
}
return 0;
}

由于hello是一个非空字符串,所以!!将其转换为1,if条件语句的条件将被认为是真,所以第一个printf语句将被执行。
反之,如果字符串“str”为NULL,则!!将其转换为0,if条件将被认为是假,第二个printf语句将被执行。
逻辑运算符是允许嵌套使用的,运算的结果可以继续作为逻辑运算符的一个参数
实例演示
#include <stdio.h>
int main() {
int a = !( (6 > 3) && (11 - 20) && (0 - 1) );
int b = !( (5 + 4) && (7 - 8) && (3 < 2) );
printf("a = %d\n", a);
printf("b = %d\n", b);
return 0;
}

? 第一个嵌套表达式分析
6 > 3的结果为1,11 - 20的结果为-9,所以(6 > 3) && (11 - 20) && (0 - 1)等价于1 && -1,结果为1!(1),结果为0?第二个嵌套表达式分析
5 + 4的结果为1,7 - 8的结果为-13 < 2的结果为0(5 + 4) && (7 - 8) && (3 < 2)等价于9 && 0,结果为0!(0),结果为1#include <stdio.h>
int main() {
int a = !( 1 || -1 && 0 );
printf("a = %d\n", a);
return 0;
}



&& 的优先级高于||,所以-1 && 0会被先运算,结果为01 || -1 && 0等价于1 || 0,结果为1!(1),结果为0逻辑运算符的优先级顺序为 ∣∣ < && < !
有兴趣的小伙伴可以参考上面的代码来验证&&和!的优先级关系哦!
通过本文的讲解,我们学会了3种逻辑运算符的使用方法及优先级关系,下一篇文章,我们将讲解位运算符。
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
我明白了:x,(y,z)=1,*[2,3]x#=>1y#=>2z#=>nil我想知道为什么z的值为nil。 最佳答案 x,(y,z)=1,*[2,3]右侧的splat*是内联扩展的,所以它等同于:x,(y,z)=1,2,3左边带括号的列表被视为嵌套赋值,所以它等价于:x=1y,z=23被丢弃,而z被分配给nil。 关于ruby-带括号和splat运算符的并行赋值,我们在StackOverflow上找到一个类似的问题: https://stackoverflow
问题是:除了在“OperatorExpressions”?例如:1%!2 最佳答案 是的,可以创建自定义运算符,但有一些注意事项。Ruby本身并不直接支持它,但是superatorsgem做了一个巧妙的把戏,将运算符链接在一起。这允许您创建自己的运算符,但有一些限制:$geminstallsuperators19然后:require'superators19'classArraysuperator"%~"do|operand|"#{self}percent-tilde#{operand}"endendputs[1]%~[2]#Out
在Ruby中有运算符(operator)。在API中,他们没有命名它的名字,只是:Theclassmustdefinetheoperator...Comparableusestoimplementtheconventionalcomparison......theobjectsinthecollectionmustalsoimplementameaningfuloperator...它叫什么名字? 最佳答案 参见上面的@Tony。然而,它也被称为(俚语)“宇宙飞船运算符(operator)”。
关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion我不经常使用ruby-通常它加起来相当于每两个月或更长时间编写一次脚本。我的大部分编程都是使用C++进行的,这与ruby有很大不同。由于我与ruby之间的差距如此之大,我总是忘记语言的基本方面(比如解析文本文件和其他简单的东西)。我想每天练习一些基本的东西,我想知道是否有一些我可以订阅的网站,并且会向我发送当天的Ruby问题或类似的东西。有人知道这样的站点/Internet服务吗?