mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
Converted all ASCII tabs to ASCII spaces using a 8 character tab stop, for all files, except for all Makefiles (plus rpm.mk). The `git diff -w` reports no changes.
109 lines
3.7 KiB
Plaintext
109 lines
3.7 KiB
Plaintext
NAME
|
|
sizeof - number of bytes required for value
|
|
|
|
SYNOPSIS
|
|
sizeof(x)
|
|
|
|
TYPES
|
|
x any
|
|
|
|
return integer
|
|
|
|
DESCRIPTION
|
|
This is analogous to the C operator sizeof for the value only.
|
|
It attempts to assess the number of bytes in memory used to store
|
|
a value and all of its components. Unlike memsize(x), this
|
|
builtin does not include the size of the overhead.
|
|
|
|
Unlike size(x), this builtin includes the trailing \0 byte on the
|
|
end of strings.
|
|
|
|
For numeric values, sizeof(x) ignores the denominator if 'x' is
|
|
an integer. For complex values, sizeof(x) ignores the imaginary
|
|
part if 'x' is real. Because the 0, 1 and -1 numeric values are
|
|
shared static values, sizeof(x) reports such values as having
|
|
0 bytes of storage.
|
|
|
|
The number returned by sizeof(x) may be less than the actual number
|
|
used because, for example, more memory may have been allocated for
|
|
a string than is used: only the characters up to and including the
|
|
first '\0' are counted in calculating the contribution of the
|
|
string to sizeof(x).
|
|
|
|
The number returned by sizeof(x) may be greater (and indeed
|
|
substantially greater) than the number of bytes actually used.
|
|
For example, after:
|
|
|
|
a = sqrt(2);
|
|
mat A[3] = {a, a, a};
|
|
|
|
the numerical information for a, A[0], A[1], A[2] are stored in the
|
|
same memory, so the memory used for A is the same as if
|
|
its 3 elements were null values. The value returned by
|
|
sizeof(A) is calculated as A were defined by:
|
|
|
|
mat A[3] = {sqrt(2), sqrt(2), sqrt(2)}.
|
|
|
|
Similar sharing of memory occurs with literal strings.
|
|
|
|
For associative arrays, only the value part of the name/value pair
|
|
is counted.
|
|
|
|
The minimum value for sizeof(x) occurs for the null and error values.
|
|
|
|
EXAMPLE
|
|
The results for examples like these will depend to some extent on
|
|
the system being used. The following were for an SGI R4k machine
|
|
in 32-bit mode:
|
|
|
|
; print sizeof(null()), sizeof(0), sizeof(3), sizeof(2^32 - 1), sizeof(2^32)
|
|
8 68 68 68 72
|
|
|
|
; x = sqrt(2, 1e-100); print sizeof(x), sizeof(num(x)), sizeof(den(x))
|
|
148 108 108
|
|
|
|
; print sizeof(list()), sizeof(list(1)), sizeof(list(1,2))
|
|
28 104 180
|
|
|
|
; print sizeof(list()),sizeof(list(1)),sizeof(list(1,2)),sizeof(list(1,2,3))
|
|
28 104 180 256
|
|
|
|
; mat A[] = {1}; mat B[] = {1,2}; mat C[] = {1,2,3}; mat D[100,100];
|
|
; print sizeof(A), sizeof(B), sizeof(C), sizeof(D)
|
|
124 192 260 680056
|
|
|
|
; obj point {x,y,z}
|
|
; obj point P = {1,2,3}; print sizeof(P)
|
|
274
|
|
|
|
LIMITS
|
|
It is assumed sizeof(x) will fit into a system long integer.
|
|
|
|
LINK LIBRARY
|
|
none
|
|
|
|
SEE ALSO
|
|
size, fsize, strlen, digits
|
|
|
|
## Copyright (C) 1999,2021 Landon Curt Noll
|
|
##
|
|
## Calc is open software; you can redistribute it and/or modify it under
|
|
## the terms of the version 2.1 of the GNU Lesser General Public License
|
|
## as published by the Free Software Foundation.
|
|
##
|
|
## Calc is distributed in the hope that it will be useful, but WITHOUT
|
|
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
|
## Public License for more details.
|
|
##
|
|
## A copy of version 2.1 of the GNU Lesser General Public License is
|
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
##
|
|
## Under source code control: 1996/05/24 02:04:04
|
|
## File existed as early as: 1996
|
|
##
|
|
## chongo <was here> /\oo/\ http://www.isthe.com/chongo/
|
|
## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/
|