首页 \ 问答 \ 比较字符时,ischar(x)&& x =='b'相当于strcmp(x,'b')?(When comparing characters, is ischar(x) && x == 'b' equivalent to strcmp(x, 'b')?)

比较字符时,ischar(x)&& x =='b'相当于strcmp(x,'b')?(When comparing characters, is ischar(x) && x == 'b' equivalent to strcmp(x, 'b')?)

在MATLAB中,我经常使用它来检查变量是否包含某个单个字符:

if ischar(x) && x == 'b'

为了减少混乱,我正在考虑将其改为:

if strcmp(x, 'b')

因为如果x不是字符或不等于'b' ,则比较将返回false,如您所料。 这些陈述在这种情况下是等同的还是有问题?

更多信息: x == 'b'是不够的,因为当x == 98时返回true,但在某些情况下(如验证用户输入), 98可能是无效输入而b 有效输入。 此外,如果x不是标准数据类型(例如,如果它是对象),则第一个失败。 拿这个(愚蠢的)例子:

x = table();
x == 'b'

这会引发错误,因为没有为表定义eq ,但是strcmp(x, 'b')返回0,因为看起来strcmp也执行类型检查。 是否需要这种异常处理可能取决于具体情况。


In MATLAB, I often use this to check if a variable contains a certain single character:

if ischar(x) && x == 'b'

to reduce clutter I'm thinking of changing it to this:

if strcmp(x, 'b')

because if x isn't a character or isn't equivalent to 'b', the comparison returns false as you would expect. Are these statements equivalent in this case or are there gotchas?

More info: x == 'b' isn't enough because this returns true when x == 98, but in certain cases (like validating user input), 98 may be invalid input while b is valid input. Also, the first one fails if x isn't a standard data type (if it's an object for example). Take this (stupid) example:

x = table();
x == 'b'

This throws an error because eq isn't defined for tables, but strcmp(x, 'b') returns 0 because it appears that strcmp also performs a type check. Whether or not this exception handling is desirable probably depends on the circumstances though.


原文:https://stackoverflow.com/questions/20848814
更新时间:2022-04-12 19:04

最满意答案

当无法发送推送通知时,Apple会通过反馈服务发送反馈消息。 反馈服务返回带有时间戳和pushtoken的json有效负载。 这些有效负载是用户可能已卸载应用程序的提示,但并非100%确定。 实际上,如果由于临时原因(例如用户没有任何可用的数据网络,处于飞行模式或从您的应用程序禁用通知),反馈消息也会警告您。 因此,我建议您记录从反馈服务返回的所有错误,然后确定您认为最能识别卸载的规则。 例如,如果用户在一周的时间内无法接收5个不同的推送通知,那么您可能希望将其视为已卸载或至少无法访问。


When a push notification can not be delivered, Apple sends a feedback message via the Feedback Service. The Feedback Service returns json payloads with timestamp and pushtoken. These payloads are hints that the user might have uninstalled the app but it's not 100% certain. Indeed, the Feedback message will also warn you if a notification could not be delivered for temporary reasons (such as the user not having any data network available, is in Airplane mode, or disabled Notifications from your app). Therefore, I would recommend you log all of the errors that are returned from the Feedback Service and then decide on a rule that you think best identifies an uninstallation. For example, if a user is not able to receive 5 different push notifications over 1 week of time, then you might want to consider him as uninstalled or, at the very least, unreachable.

相关问答

更多

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)