zoukankan      html  css  js  c++  java
  • 学点 C 语言(16): 数据类型 关于常量的前缀、后缀


    曾经对 float num = 3.14f; 这样的赋值非常疑惑, 其实现在也不明白.
    既然说明了是 float 类型, 又何必在 3.14 后面挂个 f 呢?
    
    书上说: 
    int num    = 100;  一个整数常量将默认为 int 类型(除非常数有后缀或超出了 int 的范围)
    double num = 3.14; 一个浮点数常量将默认为 double 类型
    
    并要求:
    long num               = 100L;
    long long num          = 100LL;
    unsigned long          = 100UL;
    unsigned long long num = 100ULL;
    
    float num = 3.14f;
    
    这些后缀是大小写无关的、(U 和 L是)无顺序的; 我反复测试, 看不出没有区别.
    
    我觉得这些东西用于 #define 还说得过去, 用于指定类型的变量有必要吗?
    我猜唯一的必要性或许是让编译器少转换一次.
    
    不过知道还是有好处, 以免看不懂别人的代码.
    
    总之, 前人应该自有道理, 希望谁知道能告诉我.
    
    另外, 如果是十六进制或八进制常数, 将从 int、unsigned、long、unsigned long 中自动选择最小的类型.
    


    其他情况:
    #include <stdio.h>
    #include <stddef.h>
    
    int main(void)
    {
        char c = 'a';
        char cs[] = "abc";
        wchar_t wc = L'A';     /* 这个 L 也可以省略 */
        wchar_t ws[] = L"ABC"; 
        int n1 = 65535;
        int n2 = 0xFFFF;       /* 十六进制   */
        int n3 = 0Xffff;       /* 大小写都行 */
        int n4 = 0177777;      /* 八进制     */
    
        printf("%c, %s, %c, %S\n", c, cs, wc, ws);
        printf("%d, %d, %d, %d\n", n1, n2, n3, n4);
        
        getchar();
        return 0;
    }
    
  • 相关阅读:
    python 统计gitlab代码量
    whistle 模拟用户网络超时
    Node.js 快速转换 url 链接
    实用的 Git 命令
    前端常用 prettier 配置 + vetur 配置
    vue 项目 eslint + prettier 配置
    lodash 方法 debounce 防连点 防抖按钮点击
    npm 包实现自动登录 CICD 流程
    git push --follow-tags 命令
    小程序 iOS webview 中网页使用 iframe 无法滚动问题
  • 原文地址:https://www.cnblogs.com/del/p/1342147.html
Copyright © 2011-2022 走看看