首页 \ 问答 \ 在c中u'123'或U'\ n \ t'或L'abc'整数常数怎么样?(How are u'123' or U'\n\t' or L'abc' integer constants in c? [duplicate])

在c中u'123'或U'\ n \ t'或L'abc'整数常数怎么样?(How are u'123' or U'\n\t' or L'abc' integer constants in c? [duplicate])

这个问题在这里已有答案:

在为C语言编写代码时,我一直在寻找它的语法。 我偶然发现了ANSI C Grammar(Lex) 。 在那里我发现了以下正则表达式(RE):

{CP}?"'"([^'\\\n]|{ES})+"'"     { return I_CONSTANT; }

其中CP和ES如下

CP  (u|U|L)
ES  (\\(['"\?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F0-9]+))

据我所知,ES是逃脱序列的RE。

如果我正确理解了正则表达式,那么u'123'U'\n\t'L'abc'是有效的I_CONSTANT s。

我编写了以下小程序来查看它们代表的常量值。

#include <stdio.h>

int main(void) {
    printf("%d %d %d\n", u'123', U'\n\t', L'abc');
    return 0;
}

这给出了以下输出。

51 9 99

我破译他们代表单引号内最右边字符的ASCII值。 但是,我无法理解的是这种整数常量的用法和重要性。


This question already has an answer here:

While making a compiler for C language, I was looking for its grammar. I stumbled upon ANSI C Grammar (Lex). There I found the following regular expression (RE):

{CP}?"'"([^'\\\n]|{ES})+"'"     { return I_CONSTANT; }

where CP and ES are as follows

CP  (u|U|L)
ES  (\\(['"\?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F0-9]+))

I understand that ES is RE for escape sequence.

If I understand the regular expression correctly then, u'123' or U'\n\t' or L'abc' are valid I_CONSTANTs.

I wrote the following small program to see what constant values they represent.

#include <stdio.h>

int main(void) {
    printf("%d %d %d\n", u'123', U'\n\t', L'abc');
    return 0;
}

This gave the following output.

51 9 99

I deciphered that they represent the ASCII value of the right-most character inside single quotes. However, what I fail to understand is the use and importance of this kind of integer constant.


原文:https://stackoverflow.com/questions/47960999
更新时间:2023-10-02 13:10

最满意答案

你可以用这个单一的条件替换你的所有条件:

if let index = names.indexOf(battlename) {
    print(battlename, "Vs.", monsters[index])
}

此外,如果您想要在前奏中打印怪物名称列表,而不是只打印数组,您可以将字符串作为字符串加入:

print(battlename, "Vs.", monsters.joinWithSeparator(", ")) // "Arthur Vs. Dragon, Boar, Giant, Griffin"

You can replace all your conditions with this single one:

if let index = names.indexOf(battlename) {
    print(battlename, "Vs.", monsters[index])
}

Also, a tip if you want to print the list of the monsters names in your intro, instead of just printing the array you can join the items as a string:

print(battlename, "Vs.", monsters.joinWithSeparator(", ")) // "Arthur Vs. Dragon, Boar, Giant, Griffin"

相关问答

更多

相关文章

更多

最新问答

更多
  • h2元素推动其他h2和div。(h2 element pushing other h2 and div down. two divs, two headers, and they're wrapped within a parent div)
  • 创建一个功能(Create a function)
  • 我投了份简历,是电脑编程方面的学徒,面试时说要培训三个月,前面
  • PDO语句不显示获取的结果(PDOstatement not displaying fetched results)
  • Qt冻结循环的原因?(Qt freezing cause of the loop?)
  • TableView重复youtube-api结果(TableView Repeating youtube-api result)
  • 如何使用自由职业者帐户登录我的php网站?(How can I login into my php website using freelancer account? [closed])
  • SQL Server 2014版本支持的最大数据库数(Maximum number of databases supported by SQL Server 2014 editions)
  • 我如何获得DynamicJasper 3.1.2(或更高版本)的Maven仓库?(How do I get the maven repository for DynamicJasper 3.1.2 (or higher)?)
  • 以编程方式创建UITableView(Creating a UITableView Programmatically)
  • 如何打破按钮上的生命周期循环(How to break do-while loop on button)
  • C#使用EF访问MVC上的部分类的自定义属性(C# access custom attributes of a partial class on MVC with EF)
  • 如何获得facebook app的publish_stream权限?(How to get publish_stream permissions for facebook app?)
  • 如何防止调用冗余函数的postgres视图(how to prevent postgres views calling redundant functions)
  • Sql Server在欧洲获取当前日期时间(Sql Server get current date time in Europe)
  • 设置kotlin扩展名(Setting a kotlin extension)
  • 如何并排放置两个元件?(How to position two elements side by side?)
  • 如何在vim中启用python3?(How to enable python3 in vim?)
  • 在MySQL和/或多列中使用多个表用于Rails应用程序(Using multiple tables in MySQL and/or multiple columns for a Rails application)
  • 如何隐藏谷歌地图上的登录按钮?(How to hide the Sign in button from Google maps?)
  • Mysql左连接旋转90°表(Mysql Left join rotate 90° table)
  • dedecms如何安装?
  • 在哪儿学计算机最好?
  • 学php哪个的书 最好,本人菜鸟
  • 触摸时不要突出显示表格视图行(Do not highlight table view row when touched)
  • 如何覆盖错误堆栈getter(How to override Error stack getter)
  • 带有ImageMagick和许多图像的GIF动画(GIF animation with ImageMagick and many images)
  • USSD INTERFACE - > java web应用程序通信(USSD INTERFACE -> java web app communication)
  • 电脑高中毕业学习去哪里培训
  • 正则表达式验证SMTP响应(Regex to validate SMTP Responses)