c语言中的冒号运算符,问号和冒号(?:三元运算符)在objective-c中的含义是什么?...

news/2024/7/3 1:17:09 标签: c语言中的冒号运算符

这行代码是什么意思?

label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;

江户十一〔0〕和江户一〔1〕把我弄糊涂了。

它是三元if-then-else运算符

请注意,这应该是问号,而不是引号。

哦,对不起,你说得对。

编译器似乎也允许variable ?: anotherVariable,这意味着什么?

没有第一元素的三元与(valOrVar != 0) ? valOrVar : anotherValorvar相同。

这是C三元运算符(Objective-C是C的超集):

label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;

在语义上等价于

if(inPseudoEditMode) {

label.frame = kLabelIndentedRect;

} else {

label.frame = kLabelRect;

}

没有第一元素的三元(如variable ?: anotherVariable)表示与(valOrVar != 0) ? valOrVar : anotherValOrVar相同。

(更新:哎呀!三元运算符最重要的是它可以用于if-else不能使用的地方。ie:在条件或方法参数内。[nsstring stringwithformat:@"状态:%@",(statusbool?@"approved":@"rejected")]…这对于预处理器常量是一个很好的用途:define statusstring(statusbool?@"approved":@"rejected")…然后:[nsstring stringwithformat:@"status:%@",statusstring]这样可以避免在if-else模式中使用和释放局部变量。FTW!

这就是为什么!

可能值得一提的是,在左侧是表达式的情况下,没有第一个元素(?:的三元运算符甚至更好,因为?:防止对它进行多次计算。例如:[myArray firstObject] ? [myArray firstObject] : @"Hello World";两次调用firstObject(如果firstObject不返回nil,其中[myArray firstObject] ?: @"Hello World";产生相同的结果,但从未多次调用firstObject。

最后~~我已经用这个接线员很久了(我最喜欢的迪福),但不知道它叫什么。这个大问题现在得到了解答。谢谢

还想补充一下,由于emoji与singer相似,没有第一个元素?:的三元运算符也被称为elvis运算符。当然,在这种情况下,当我们除去一个元素时,它不再是一个三元运算符,而是一个二元运算符。二进制运算符包括我们编程时通常使用的绝大多数运算符(*、+、-、^、|、||、&、>>等)。

它是三元或条件运算符。它的基本形式是:

condition ? valueIfTrue : valueIfFalse

其中只有在选择值时才会对其进行评估。

这本应该被投得更多,简单明了。

只是澄清一下,这并不局限于价值观。condition ? codeIfTrue : codeIfFalse

简单地说,逻辑是

(condition) ? {code for YES} : {code for NO}

简单而优雅

这实际上是最好的答案,因为其他答案意味着结果只能有一个"值",而这表明结果可以放置任意代码。

以巴里·沃克的精彩解释为基础…

三元运算符最重要的是它可以用于if-else不能使用的地方。ie:在条件或方法参数内。

[NSString stringWithFormat: @"Status: %@", (statusBool ? @"Approved" : @"Rejected")]

…这对预处理器常量非常有用:

// in your pch file...

#define statusString (statusBool ? @"Approved" : @"Rejected")

// in your m file...

[NSString stringWithFormat: @"Status: %@", statusString]

这样可以避免在if-else模式中使用和释放局部变量。FTW!

这只是通常的三元运算符。如果问号前的部分为真,则计算并返回冒号前的部分,否则计算并返回冒号后的部分。

a?b:c

就像

if(a)

b;

else

c;

这只是写一个if-then-else语句的简短形式。其含义与以下代码相同:

if(inPseudoEditMode)

label.frame = kLabelIndentedRect;

else

label.frame = kLabelRect;

这是C的一部分,所以它不是客观C特定的。以下是一份if声明的翻译:

if (inPseudoEditMode)

label.frame = kLabelIndentedRec;

else

label.frame = kLabelRect;

有趣的事实,如果你想检查空/空例如:

-(NSString*) getSomeStringSafeCheck

{

NSString *string = [self getSomeString];

if(string != nil){

return String;

}

return @"";

}

快速的方法是:

-(NSString*) getSomeStringSafeCheck

{

return [self getSomeString] != nil ? [self getSomeString] : @"";

}

然后您可以用最简单的方法更新它:

-(NSString*) getSomeStringSafeCheck

{

return [self getSomeString]?: @"";

}

因为在目标C中:

如果一个对象为零,它将作为布尔值返回false;

三元运算符的第二个参数可以为空,因为它将返回"?"左侧的结果。

所以假设你写:

[self getSomeString] != nil?: @"";

第二个参数返回布尔值,因此引发异常。

Ternary operator example.If the value of isFemale

boolean variable is YES, print"GENDER IS FEMALE" otherwise"GENDER IS

MALE"

? means = execute the codes before the : if the condition is true.

: means = execute the codes after the : if the condition is false.

Objtovi-C

BOOL isFemale = YES;

NSString *valueToPrint = (isFemale == YES) ? @"GENDER IS FEMALE" : @"GENDER IS MALE";

NSLog(valueToPrint); //Result will be"GENDER IS FEMALE" because the value of isFemale was set to YES.

为斯威夫特

let isFemale = false

let valueToPrint:String = (isFemale == true) ?"GENDER IS FEMALE" :"GENDER IS MALE"

print(valueToPrint) //Result will be "GENDER IS MALE" because the isFemale value was set to false.

正如大家所说,它是一种表示条件运算符的方法

if (condition){

true

}

else {

false

}

使用三元运算符(condition)? true:false。为了增加额外的信息,在Swift中,我们有了使用??表示它的新方法。

let imageObject: UIImage = (UIImage(named:"ImageName")) ?? (initialOfUsername.capitalizedString).imageFromString

它类似于

int a = 6, c= 5;

if (a > c)

{

a is greater

} else {

c is greater

}

等于

if (a>c)?a:c==>等于if (a>c)?:c。

我们可以用??来代替?:,它是快速的。

我刚刚学到了关于三元运算符的一些新知识。省略中间操作数的简短形式是非常优雅的,也是C保持相关的众多原因之一。仅供参考,我第一次真正了解这一点是在C中实现的一个例程的上下文中进行的,它也支持三元运算符。由于三元运算符是用C表示的,因此它可以用其他语言表示,这些语言本质上是其扩展(例如,objective-c、c)。

int padding = ([[UIScreen mainScreen] bounds].size.height <= 480) ? 15 : 55;

方法

int padding;

if ([[UIScreen mainScreen] bounds].size.height <= 480)

padding = 15;

else

padding = 55;

它是三元运算符,类似于if/else语句。

if(a > b) {

what to do;

}

else {

what to do;

}

在三元运算符中,它是这样的:条件?条件为真时该怎么办:条件为假时该怎么办;

(a > b) ? what to do if true : what to do if false;

我很感激你试图为这个网站做贡献,但是发布简单重复其他答案的答案通常是不鼓励的,因为它只会把问题搞得一团糟。


http://www.niftyadmin.cn/n/1734222.html

相关文章

python搜索引擎 django_Django添加全文搜索功能入门篇

感觉网络上关于Django全文搜索的中文文章太少&#xff0c;并且讲的也不是很到位&#xff0c;就是简单介绍了怎么配置&#xff0c;并没有说这样配置有什么用&#xff0c;所以依然很迷茫。所以希望我这篇文章能够帮助到后来人。一、使用的工具haystack是django的开源搜索框架&…

解决AJAX传送中文会导致乱码的问题

关于在AJAX中GET回的ResponseText中文乱码的最简解决办法 用AJAX来GET回一个页面时&#xff0c;RESPONSETEXT里面的中文多半会出现乱码&#xff0c;这是因为xmlhttp在处理返回的 responseText的时候&#xff0c;是把resposeBody按UTF-8编码进解码考形成的&#xff0c;如果服务器…

SQL server的下载

本文链接&#xff1a;https://mp.csdn.net/mdeditor/102479776 这里&#xff0c; 推荐一个很好用&#xff0c;很良心的微信公众号叫做&#xff1a;软件安装管家 关注之后&#xff0c; 点击软件目录里面的软件目录&#xff0c;然后往下拉&#xff0c;就可以看到 其中的&#xf…

c语言打出爱心中间可以弄字,c语言 如下 输出一个心形,然后想在心形内部加入汉字,如何修改? #includ...

满意答案hrtyd4fr62016.05.13采纳率&#xff1a;41% 等级&#xff1a;6已帮助&#xff1a;507人##C#include #include using namespace std;int main(){double x, y,size10;char ch*;string message("fateland");int print_line 4;if(message.length() % 2 ! 0) …

python列表和字典的增删改查_python序列(列表,元组,字典)的增删改查

操作字典方法示例增加dict[key]value通过赋值的方法增加元素eg.>>> dict{name:li,age:1}>>> dict[class]first>>> dict{name: li, age: 1, class: first}dict.update(dict_i)把新的字典dict_i的键/值对更新到dict里(适用dict_i中包含与dict不同的ke…

Ajax表单提交数据出现乱码和解决办法

> >更多精彩技术文章>//要传递的参数var queryString "firstName" firstName "&lastName" lastName "&birthday" birthday; function //GET方式提交 doRequestUsingGET() { createXMLHttpRequest(); …

单片机DA转换实验c语言编程,单片机DA转换实验报告

实验九D/A实验报告㈠实验目的1.掌握单片机与D/A的接口及编程方法&#xff1b;2.通过D/A动态波形输出进一步理解D/A的工作原理&#xff1b;3.结合实验六中的A/D来检验软硬件的正确性。4.进一步了解单片机系统地址分配概念。㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一…

我的SQL学习笔记

本博客主要用于自己期末复习sql代码使用&#xff0c;同时也希望自己的这点微薄的笔记可以帮到别人吧。有什么写得不好或者写得不对的地方&#xff0c;欢迎各位大佬提出批评指正&#xff0c;谢谢。 SQL server的下载 1.如何创建自己的数据库和日志文件 2.如何创建表 3.如何添加…