我正在通过书籍练习生成一些随机序列号,这是我的功能:
NSString *randomSerialNumber = [NSString stringWithFormat:@"%c%c%c%c%c",
'0' + random() % 10,
'A' + random() % 26,
'0' + random() % 10,
'A' + random() % 26,
'0' + random() % 10];
Run Code Online (Sandbox Code Playgroud)
这有效,输出如下:2J6X7.但之前,0s和As我用双引号括起来,示例输出是11764?Ò˜.我第一次做错了什么,为什么使用单引号修复它?
Adr*_*ian 12
单引号和双引号之间的区别在于双引号声明了一个字符串,而单引号声明了一个单引号.尝试这样做,您将收到语法错误:
'More than one character'
Run Code Online (Sandbox Code Playgroud)
你的代码输出一堆随机字符的原因是字符串不像大多数其他数据类型那样是整数,而是指针.这意味着当您键入时"A string",表达式的结果是存储字符的内存位置.这可能是内存中的任何位置,具体取决于您何时启动该程序.所以,当你添加random()到字符串时,它会给你一个随机的内存地址!该声明与英语相同:
Store the characters "A" in memory, and then give me the memory
address a random amount of cells later.
Run Code Online (Sandbox Code Playgroud)
随后的单元格数量可能是程序中的任何其他内容.指针被解释为一个字符(因为%c),但它并不意味着,给你看似随机的输出.
| 归档时间: |
|
| 查看次数: |
1502 次 |
| 最近记录: |