如何在bash中找到各种数据类型的范围? 我必须找到数据类型的范围,例如C++中的:< /P>

如何在bash中找到各种数据类型的范围? 我必须找到数据类型的范围,例如C++中的:< /P>,bash,Bash,int,unsigned int,double,char 我们知道C++中的变量的范围和内存大小,我想知道如何用BASH脚本语言定义这个范围,我如何知道BASH脚本中的数据类型,我指的是int、双、char、…我们可以在BASH脚本中定义,并且如何解释这个结果,我想知道数据的确切类型和范围,并找出C++中保留了多少内存,例如int=4字节,但是我想知道BASH脚本< /P> > P>中的数据类型与C++中的数据类型不同,但是,如果有人偶然发现这个问题,寻找一种从BASH脚本获得C++数据类型的大

int
unsigned int
double
char


我们知道C++中的变量的范围和内存大小,我想知道如何用BASH脚本语言定义这个范围,我如何知道BASH脚本中的数据类型,我指的是int、双、char、…我们可以在BASH脚本中定义,并且如何解释这个结果,我想知道数据的确切类型和范围,并找出C++中保留了多少内存,例如int=4字节,但是我想知道BASH脚本< /P> > P>中的数据类型与C++中的数据类型不同,但是,如果有人偶然发现这个问题,寻找一种从BASH脚本获得C++数据类型的大小、最小值和最大值的方法,这里有一种方法可以做到:

#!/bin/bash

# Terminate script if any command fails.
set -e

# Make temporary directory.
mydir=$(mktemp -dt "$0XXXX")

# Set trap to remove the temp directory when we exit.
function cleanup {
    rm -fr "$mydir"
}
trap cleanup EXIT

# Write source code for program that will output information about various types.
cat > "$mydir/source.cpp" <<SOURCE
#include <iostream>
#include <limits>
#include <cstdint>

template <typename T>
void write_type_info()
{
    std::cout << sizeof(T) << std::endl
              << std::numeric_limits<T>::min() << std::endl
              << std::numeric_limits<T>::max() << std::endl;
}

template <>
void write_type_info<char>()
{
    std::cout << sizeof(char) << std::endl
              << static_cast<int>(std::numeric_limits<char>::min()) << std::endl
              << static_cast<int>(std::numeric_limits<char>::max()) << std::endl;
}

int main(void) {
    write_type_info<intmax_t>();
    write_type_info<char>();
    write_type_info<short>();

    return 0;
}

SOURCE

# Compile this code
g++ -std=c++11 -o "$mydir/program" "$mydir/source.cpp"

# Run it, capturing the output in an array
output=($("$mydir/program"))

echo Size of intmax_t: ${output[0]}
echo Min value of intmax_t: ${output[1]}
echo Max value of intmax_t: ${output[2]}
echo Size of char: ${output[3]}
echo Min value of char: ${output[4]}
echo Max value of char: ${output[5]}
echo Size of short: ${output[6]}
echo Min value of short: ${output[7]}
echo Max value of short: ${output[8]}

例如,您必须执行autoconf生成的
/configure
脚本所执行的操作。这意味着编译一个小型C++程序,运行它并捕获输出。使用AutoCONF可能是最简单的,而不是试图重新实现它(并且冒着如此严重的风险)。@ C++中的CharlesDuffy在内存中得到4字节,典型的范围为0~225,好吗?如果我知道在bash脚本中定义一个int,那么bash脚本中会有多少内存或典型范围?如果你想知道bash本机整数的范围,而不是知道bash中的C数据类型大小,那么其他人已经询问并回答了这个问题……例如,请参阅;关于这个话题还有一个问题。考虑<代码> MaPrase-t输出@ @ CalsSuffy。我添加了对C++代码的支持。我认为更便携的路线可能是使用C而不是C++。但是我不能使用我的模板。D:无论如何,这对于想要此功能的人来说是一个很好的起点……尽管在这种特殊情况下,预处理器宏可能也能完成这项工作,而不是美观性。:)
Size of intmax_t: 8
Min value of intmax_t: -9223372036854775808
Max value of intmax_t: 9223372036854775807
Size of char: 1
Min value of char: -128
Max value of char: 127
Size of short: 2
Min value of short: -32768
Max value of short: 32767